Procházet zdrojové kódy

Merge branch 'candidate-7.4.x' into candidate-7.4.0

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman před 6 roky
rodič
revize
20b301c01f

+ 1 - 0
esp/src/eclwatch/GridDetailsWidget.js

@@ -21,6 +21,7 @@ define([
     "dijit/layout/BorderContainer",
     "dijit/Toolbar",
     "dijit/form/Button",
+    "dijit/form/ToggleButton",
     "dijit/ToolbarSeparator",
     "dijit/layout/ContentPane"
 

+ 0 - 4
esp/src/eclwatch/templates/DynamicESDLDefinitionDetailsWidget.html

@@ -2,10 +2,6 @@
     <div id="${id}BorderContainer" class="${baseClass}BorderContainer" style="width: 100%; height: 100%;" data-dojo-type="dijit.layout.BorderContainer">
         <div id="${id}TabContainer" data-dojo-props="region: 'center', tabPosition: 'top'" style="width: 100%; height: 100%" data-dojo-type="dijit.layout.TabContainer">
             <div id="${id}_Summary" style="width: 100%; height: 100%" data-dojo-props="title:'${i18n.XML}'" data-dojo-type="dijit.layout.BorderContainer">
-                <div id="${id}Toolbar" class="topPanel" data-dojo-props="region: 'top'" data-dojo-type="dijit.Toolbar">
-                    <div class="right" data-dojo-attach-event="onChange:_onMaximize" data-dojo-props="iconClass:'iconMaximize', showLabel:false" checked=false data-dojo-type="dijit.form.ToggleButton">${i18n.MaximizeRestore}</div>
-                    <div id="${id}NewPage" class="right" data-dojo-attach-event="onClick:_onNewPage" data-dojo-props="iconClass:'iconNewPage', showLabel:false" data-dojo-type="dijit.form.Button">${i18n.OpenInNewPage}</div>
-                </div>
                 <div id="${id}_XML" data-dojo-props="region: 'center'" data-dojo-type="ECLSourceWidget"></div>
             </div>
         </div>

+ 0 - 3
esp/src/eclwatch/templates/TopologyDetailsWidget.html

@@ -4,9 +4,6 @@
             <div id="${id}_Summary" style="width: 100%; height: 100%" data-dojo-props="title:'${i18n.Summary}', iconClass:'iconWorkunit'" data-dojo-type="dijit.layout.BorderContainer">
                 <div id="${id}Toolbar" class="topPanel" data-dojo-props="region: 'top'" data-dojo-type="dijit.Toolbar">
                     <div id="${id}Refresh" data-dojo-attach-event="onClick:_onRefresh" data-dojo-props="iconClass:'iconRefresh'" data-dojo-type="dijit.form.Button">${i18n.Refresh}</div>
-                    <span data-dojo-type="dijit.ToolbarSeparator"></span>
-                    <div class="right" data-dojo-attach-event="onChange:_onMaximize" data-dojo-props="iconClass:'iconMaximize', showLabel:false" checked=false data-dojo-type="dijit.form.ToggleButton">${i18n.MaximizeRestore}</div>
-                    <div id="${id}NewPage" class="right" data-dojo-attach-event="onClick:_onNewPage" data-dojo-props="iconClass:'iconNewPage', showLabel:false" data-dojo-type="dijit.form.Button">${i18n.OpenInNewPage}</div>
                 </div>
                 <div id="${id}_Details" data-dojo-props="region: 'center'" data-dojo-type="dijit.layout.ContentPane">
                     ${i18n.PleaseSelectATopologyItem}

+ 6 - 2
esp/src/src/ESPUtil.ts

@@ -543,7 +543,7 @@ export function maximizeWidget(widget: any, max: boolean, prev?: IMaximizeState)
             var retVal: IMaximizeState = {
                 parentNode: widget.domNode.parentNode,
                 nextElementSibling: widget.domNode.nextElementSibling,
-                stylePosition: domStyle.set(widget.domNode, "position"),
+                stylePosition: domStyle.get(widget.domNode, "position"),
                 stubResize: stub.resize,
                 widgetResize: widget.resize
             };
@@ -566,7 +566,11 @@ export function maximizeWidget(widget: any, max: boolean, prev?: IMaximizeState)
             widget.resize = prev.widgetResize;
             stub.resize = prev.stubResize;
 
-            prev.parentNode.insertBefore(widget.domNode, prev.nextElementSibling);
+            if (prev.nextElementSibling) {
+                prev.parentNode.insertBefore(widget.domNode, prev.nextElementSibling);
+            } else {
+                prev.parentNode.appendChild(widget.domNode);
+            }
             domStyle.set(widget.domNode, "position", prev.stylePosition);
 
             stub.resize();

+ 38 - 38
fs/dafsserver/dafsserver.cpp

@@ -1119,10 +1119,21 @@ protected:
     bool eofSeen = false;
     const RtlRecord *record = nullptr;
     RowFilter filters;
+    RtlDynRow *filterRow = nullptr;
     // virtual field values
     StringAttr logicalFilename;
     unsigned numInputFields = 0;
 
+    inline bool fieldFilterMatch(const void * buffer)
+    {
+        if (filterRow)
+        {
+            filterRow->setRow(buffer, filters.getNumFieldsRequired());
+            return filters.matches(*filterRow);
+        }
+        else
+            return true;
+    }
 public:
     IMPLEMENT_IINTERFACE_USING(PARENT);
 
@@ -1133,11 +1144,23 @@ public:
             throw createDafsException(DAFSERR_cmdstream_protocol_failure, "CRemoteDiskBaseActivity: fileName missing");
         logicalFilename.set(config.queryProp("virtualFields/logicalFilename"));
     }
+    ~CRemoteDiskBaseActivity()
+    {
+        delete filterRow;
+    }
     void setupInputMeta(const IPropertyTree &config, IOutputMetaData *_inMeta)
     {
         inMeta.setown(_inMeta);
         record = &inMeta->queryRecordAccessor(true);
         numInputFields = record->getNumFields();
+
+        if (config.hasProp("keyFilter"))
+        {
+            filterRow = new RtlDynRow(*record);
+            Owned<IPropertyTreeIterator> filterIter = config.getElements("keyFilter");
+            ForEach(*filterIter)
+                filters.addFilter(*record, filterIter->query().queryProp(nullptr));
+        }
     }
 // IRemoteReadActivity impl.
     virtual unsigned __int64 queryProcessed() const override
@@ -1199,7 +1222,6 @@ protected:
     unsigned __int64 startPos = 0;
     bool compressed = false;
     bool cursorDirty = false;
-    RtlDynRow *filterRow = nullptr;
     // virtual field values
     unsigned partNum = 0;
     offset_t baseFpos = 0;
@@ -1259,16 +1281,6 @@ protected:
         opened = false;
         eofSeen = true;
     }
-    inline bool fieldFilterMatch(const void * buffer)
-    {
-        if (filterRow)
-        {
-            filterRow->setRow(buffer, 0);
-            return filters.matches(*filterRow);
-        }
-        else
-            return true;
-    }
 public:
     CRemoteStreamReadBaseActivity(IPropertyTree &config, IFileDescriptor *fileDesc) : PARENT(config, fileDesc)
     {
@@ -1278,21 +1290,6 @@ public:
         partNum = config.getPropInt("virtualFields/partNum");
         baseFpos = (offset_t)config.getPropInt64("virtualFields/baseFpos");
     }
-    ~CRemoteStreamReadBaseActivity()
-    {
-        delete filterRow;
-    }
-    void setupInputMeta(const IPropertyTree &config, IOutputMetaData *inMeta)
-    {
-        PARENT::setupInputMeta(config, inMeta);
-        if (config.hasProp("keyFilter"))
-        {
-            filterRow = new RtlDynRow(*record);
-            Owned<IPropertyTreeIterator> filterIter = config.getElements("keyFilter");
-            ForEach(*filterIter)
-                filters.addFilter(*record, filterIter->query().queryProp(nullptr));
-        }
-    }
 // IVirtualFieldCallback impl.
     virtual unsigned __int64 getFilePosition(const void * row) override
     {
@@ -2057,20 +2054,23 @@ public:
                 while (keyManager->lookup(true))
                 {
                     const byte *keyRow = keyManager->queryKeyBuffer();
-                    if (translator)
-                        retSz = translator->translate(outBuilder, *this, keyRow);
-                    else
+                    if (fieldFilterMatch(keyRow))
                     {
-                        retSz = keyManager->queryRowSize();
-                        outBuilder.ensureCapacity(retSz, nullptr);
-                        memcpy(outBuilder.getSelf(), keyRow, retSz);
-                    }
-                    dbgassertex(retSz);
+                        if (translator)
+                            retSz = translator->translate(outBuilder, *this, keyRow);
+                        else
+                        {
+                            retSz = keyManager->queryRowSize();
+                            outBuilder.ensureCapacity(retSz, nullptr);
+                            memcpy(outBuilder.getSelf(), keyRow, retSz);
+                        }
+                        dbgassertex(retSz);
 
-                    const void *ret = outBuilder.getSelf();
-                    outBuilder.finishRow(retSz);
-                    ++processed;
-                    return ret;
+                        const void *ret = outBuilder.getSelf();
+                        outBuilder.finishRow(retSz);
+                        ++processed;
+                        return ret;
+                    }
                 }
                 retSz = 0;
             }