diff --git a/src/WebAppDIRAC/WebApp/handler/SystemAdministrationHandler.py b/src/WebAppDIRAC/WebApp/handler/SystemAdministrationHandler.py index b53dd3b92..cca3883b5 100644 --- a/src/WebAppDIRAC/WebApp/handler/SystemAdministrationHandler.py +++ b/src/WebAppDIRAC/WebApp/handler/SystemAdministrationHandler.py @@ -6,10 +6,10 @@ from DIRAC import gConfig, gLogger from DIRAC.Core.Utilities.List import uniqueElements -from DIRAC.FrameworkSystem.Client.MonitoringClient import gMonitor from DIRAC.FrameworkSystem.Client.NotificationClient import NotificationClient from DIRAC.FrameworkSystem.Client.SystemAdministratorClient import SystemAdministratorClient from DIRAC.FrameworkSystem.Client.ComponentMonitoringClient import ComponentMonitoringClient +from DIRAC.FrameworkSystem.DB.ComponentMonitoringDB import ComponentMonitoringDB from WebAppDIRAC.Lib.WebHandler import WebHandler, asyncGen @@ -699,7 +699,7 @@ def web_ComponentLocation(self): condDict = {"Setup": _setup} gLogger.debug("condDict" + str(condDict)) - retVal = gMonitor.getComponentsStatus(condDict) + retVal = ComponentMonitoringDB.getComponentsStatus(condDict) today = datetime.datetime.today() if retVal["OK"]: diff --git a/src/WebAppDIRAC/WebApp/static/DIRAC/ActivityMonitor/classes/ActivityMonitor.js b/src/WebAppDIRAC/WebApp/static/DIRAC/ActivityMonitor/classes/ActivityMonitor.js deleted file mode 100755 index d03e4cca0..000000000 --- a/src/WebAppDIRAC/WebApp/static/DIRAC/ActivityMonitor/classes/ActivityMonitor.js +++ /dev/null @@ -1,1375 +0,0 @@ -Ext.define("DIRAC.ActivityMonitor.classes.ActivityMonitor", { - extend: "Ext.dirac.core.Module", - requires: [ - "Ext.util.*", - "Ext.panel.Panel", - "Ext.form.field.Text", - "Ext.button.Button", - "Ext.menu.Menu", - "Ext.form.field.ComboBox", - "Ext.layout.*", - "Ext.form.field.Date", - "Ext.form.field.TextArea", - "Ext.form.field.Checkbox", - "Ext.form.FieldSet", - "Ext.dirac.utils.DiracMultiSelect", - "Ext.toolbar.Toolbar", - "Ext.data.Record", - "Ext.Array", - "Ext.data.TreeStore", - "Ext.ux.form.MultiSelect", - "DIRAC.ActivityMonitor.classes.ActivityTreeModel", - ], - - expansionState: {}, - initComponent: function () { - var me = this; - me.launcher.title = "Activity Monitor"; - - Ext.apply(me, { - layout: "border", - bodyBorder: false, - defaults: { - collapsible: true, - split: true, - }, - items: [], - header: false, - }); - - me.callParent(arguments); - }, - - buildUI: function () { - var me = this; - - var oToolb = Ext.create("Ext.toolbar.Toolbar", { - dock: "top", - border: false, - layout: { - pack: "center", - }, - items: [ - { - xtype: "button", - text: "Proxy Monitor", - handler: function () { - me.mainPanel.getLayout().setActiveItem(0); - }, - toggleGroup: me.id + "-ids-submodule", - allowDepress: false, - }, - { - xtype: "button", - text: "Plot Creator", - handler: function () { - me.mainPanel.getLayout().setActiveItem(1); - }, - toggleGroup: me.id + "-ids-submodule", - allowDepress: false, - }, - { - xtype: "button", - text: "Plot Viewer", - handler: function () { - me.mainPanel.getLayout().setActiveItem(2); - }, - toggleGroup: me.id + "-ids-submodule", - allowDepress: false, - }, - { - xtype: "button", - text: "System overview plots", - handler: function () { - me.mainPanel.getLayout().setActiveItem(3); - }, - toggleGroup: me.id + "-ids-submodule", - allowDepress: false, - }, - ], - }); - - oToolb.items.getAt(0).toggle(); - - me.mainPanel = new Ext.create("Ext.panel.Panel", { - floatable: false, - layout: "card", - region: "center", - header: false, - border: false, - dockedItems: [oToolb], - }); - - me.__buildActivityMonitor(); - me.__buildPlotManagement(); - me.__buildPlotViewer(); - me.__buildSystemViewer(); - - me.add([me.mainPanel]); - }, - - __buildActivityMonitor: function () { - var me = this; - - me.activityMonitorDataStore = new Ext.data.JsonStore({ - proxy: { - type: "ajax", - url: GLOBAL.BASE_URL + "ActivityMonitor/getActivityData", - reader: { - keepRawData: true, - type: "json", - rootProperty: "result", - }, - timeout: 1800000, - }, - autoLoad: true, - fields: [ - { - name: "sources_id", - type: "int", - }, - "sources_site", - "sources_componentType", - "sources_componentLocation", - "sources_componentName", - { - name: "activities_id", - type: "int", - }, - "activities_name", - "activities_category", - "activities_unit", - "activities_type", - "activities_description", - { - name: "activities_bucketLength", - type: "int", - }, - "activities_filename", - { - name: "activities_lastUpdate", - type: "float", - }, - ], - remoteSort: true, - pageSize: 100, - listeners: { - load: function (oStore, records, successful, eOpts) { - var bResponseOK = oStore.proxy.getReader().rawData["success"] == "true"; - - if (!bResponseOK) { - GLOBAL.APP.CF.alert(oStore.proxy.getReader().rawData["error"], "info"); - - if (parseInt(oStore.proxy.getReader().rawData["total"], 10) == 0) { - me.dataStore.removeAll(); - } - } - }, - }, - }); - - var oDeleteSelectedActivities = new Ext.Button({ - text: "Delete", - iconCls: "dirac-icon-delete", - handler: function () { - var oElems = Ext.query("#" + me.activityMonitorPanel.id + " input.checkrow"); - - var oItems = []; - - for (var i = 0; i < oElems.length; i++) if (oElems[i].checked) oItems.push(oElems[i].value); - - if (oItems.length < 1) { - GLOBAL.APP.CF.alert("No jobs were selected", "error"); - return; - } - - Ext.Ajax.request({ - url: GLOBAL.BASE_URL + "ActivityMonitor/deleteActivities", - params: { - ids: oItems.join(","), - }, - scope: me, - success: function (response) { - me.activityMonitorDataStore.store.load(); - }, - }); - }, - tooltip: "Click to delete all selected proxies", - }); - - me.activityMonitorToolbar = Ext.create("Ext.toolbar.Paging", { - store: me.activityMonitorDataStore, - displayInfo: true, - displayMsg: "Displaying topics {0} - {1} of {2}", - items: [oDeleteSelectedActivities, "->"], - prependButtons: true, - emptyMsg: "No topics to display", - layout: { - overflowHandler: "Scroller", - }, - }); - - var sGridId = Ext.id(); - - var sCheckboxDefinition = ""; - sCheckboxDefinition += '' - ); - }, - renderLastUpdate: function (value, metadata, record, rowIndex, colIndex, store) { - var lastUpdated = record.data.activities_lastUpdate; - var timeLimit = 86400 * 30; - if (lastUpdated > timeLimit) lastUpdated = timeLimit; - var green = parseInt((200 * (timeLimit - lastUpdated)) / timeLimit); - var red = parseInt((200 * lastUpdated) / timeLimit); - return '' + lastUpdated + ""; - }, - bbar: me.activityMonitorToolbar, - }); - - me.htmlDescriptionVariables = ""; - me.htmlDescriptionVariables += ""; - me.htmlDescriptionVariables += ""; - me.htmlDescriptionVariables += ""; - me.htmlDescriptionVariables += ""; - me.htmlDescriptionVariables += ""; - - var oVariables = [ - ["$DESCRIPTION", "Description of the activity"], - ["$SITE", "Site for the originating component"], - ["$COMPONENTTYPE", "Type of component to generate the activity (for example: service, agent, web)"], - ["$COMPONENTNAME", "Full name of component"], - ["$COMPONENTLOCATION", " Location of component"], - ["$UNIT", "Activity unit"], - ["$CATEGORY", "Activity category"], - ]; - - for (var i = 0; i < oVariables.length; i++) { - me.htmlDescriptionVariables += ""; - me.htmlDescriptionVariables += ""; - me.htmlDescriptionVariables += ""; - me.htmlDescriptionVariables += ""; - } - - me.htmlDescriptionVariables += "
"; - me.htmlDescriptionVariables += "Variable Name"; - me.htmlDescriptionVariables += ""; - me.htmlDescriptionVariables += "Description"; - me.htmlDescriptionVariables += "
"; - me.htmlDescriptionVariables += oVariables[i][0]; - me.htmlDescriptionVariables += ""; - me.htmlDescriptionVariables += oVariables[i][1]; - me.htmlDescriptionVariables += "
"; - - me.mainPanel.add([me.activityMonitorPanel]); - }, - - __buildPlotManagement: function () { - var me = this; - - me.plotManagementMainPanel = new Ext.create("Ext.panel.Panel", { - floatable: false, - layout: "border", - header: false, - border: false, - items: [], - defaults: { - collapsible: true, - split: true, - }, - }); - - var sGridId = Ext.id(); - - var sCheckboxDefinition = ""; - sCheckboxDefinition += ''; - }, - dockedItems: [ - { - dock: "top", - xtype: "toolbar", - border: false, - items: [ - "->", - { - xtype: "button", - iconCls: "dirac-icon-delete", - text: "Delete", - handler: function () {}, - }, - ], - tooltip: "Delete selected views", - }, - ], - }); - - me.plotManagementListPanel.refreshData(); - - // ------------------------------------------------------------------------------------- - - var oTopPanel = new Ext.create("Ext.panel.Panel", { - region: "center", - floatable: false, - layout: "border", - header: false, - defaults: { - collapsible: true, - split: true, - }, - }); - - me.viewDefinitionData = {}; - me.viewDefinitionDataForServer = {}; - me.viewDefinitionDataForServerVariable = []; - - me.plotManagementFieldCreator = new Ext.create("Ext.panel.Panel", { - region: "west", - floatable: false, - layout: "anchor", - header: false, - width: 350, - bodyPadding: 5, - dockedItems: [ - { - dock: "top", - xtype: "toolbar", - border: false, - layout: { - pack: "center", - }, - items: [ - "->", - { - xtype: "button", - iconCls: "dirac-icon-plus", - text: "Add to view definition", - handler: function () { - var sTypeValue = me.restrictByFieldCreator.getValue(); - var oSelectedValues = me.valuesFieldCreator.getValue(); - - if (sTypeValue == null) { - GLOBAL.APP.CF.alert("No data type selected !", "warning"); - return; - } - - if (me.variableFieldCreator.getValue() || (!me.variableFieldCreator.getValue() && oSelectedValues.length > 0)) { - var sTypeText = me.restrictByFieldCreator.findRecordByValue(sTypeValue).get("text"); - - me.viewDefinitionData[sTypeText] = { - value: sTypeValue, - checked: me.variableFieldCreator.getValue(), - }; - - if (me.variableFieldCreator.getValue()) me.viewDefinitionDataForServerVariable.push(sTypeValue); - else me.viewDefinitionDataForServer[sTypeValue] = oSelectedValues; - - oNodeData = { - text: sTypeText, - leaf: false, - }; - var oRoot = me.plotManagementViewTreeStore.getRootNode(); - - var oTypeNode = oRoot.createNode(oNodeData); - oRoot.appendChild(oTypeNode); - - if (me.variableFieldCreator.getValue()) { - var oNewNode = oTypeNode.createNode({ - text: "variable value", - leaf: true, - }); - oTypeNode.appendChild(oNewNode); - } else { - for (var i = 0; i < oSelectedValues.length; i++) { - var oNewNode = oTypeNode.createNode({ - text: oSelectedValues[i], - leaf: true, - }); - oTypeNode.appendChild(oNewNode); - } - } - - oRoot.expand(); - oTypeNode.expand(); - - // we have to remove the selected option - - me.restrictByFieldCreator.store.remove(me.restrictByFieldCreator.findRecordByValue(sTypeValue)); - - // we have to set the value to null - me.restrictByFieldCreator.setValue(null); - me.valuesFieldCreator.store.removeAll(); - me.valuesFieldCreator.reset(); - } else { - GLOBAL.APP.CF.alert("No values have been selected !", "warning"); - } - }, - }, - ], - }, - ], - }); - - me.restrictByFieldCreator = Ext.create("Ext.form.field.ComboBox", { - fieldLabel: "Restrict by", - queryMode: "local", - labelAlign: "left", - displayField: "text", - valueField: "value", - anchor: "100%", - editable: false, - store: new Ext.data.ArrayStore({ - fields: ["value", "text"], - data: [ - ["sources.site", "Site"], - ["sources.componentType", "Component type"], - ["sources.componentLocation", "Component location"], - ["sources.componentName", "Component name"], - ["activities.description", "Activity"], - ["activities.category", "Activity category"], - ], - }), - value: null, - listeners: { - change: function (oComp, sNewValue, sOldValue, eOpts) { - if (sNewValue != null && Ext.util.Format.trim(sNewValue) != "") { - Ext.Ajax.request({ - url: GLOBAL.BASE_URL + "ActivityMonitor/queryFieldValue", - params: { - queryField: sNewValue, - selectedFields: Ext.JSON.encode(me.viewDefinitionDataForServer), - }, - scope: me, - success: function (response) { - var response = Ext.JSON.decode(response.responseText); - - if (response["success"] == "true") { - me.valuesFieldCreator.store.removeAll(); - - oData = response.result; - - for (var i = 0; i < oData.length; i++) { - me.valuesFieldCreator.store.add({ - value: Ext.util.Format.trim(oData[i][0]), - }); - } - - me.valuesFieldCreator.reset(); - } else { - GLOBAL.APP.CF.alert(response["error"], "warning"); - } - }, - }); - } - }, - }, - }); - - me.valuesFieldCreator = new Ext.ux.form.MultiSelect({ - fieldLabel: "Having values", - queryMode: "local", - labelAlign: "left", - displayField: "value", - valueField: "value", - anchor: "100%", - height: 150, - store: new Ext.data.ArrayStore({ - fields: ["value"], - data: [], - }), - }); - - me.variableFieldCreator = Ext.create("Ext.form.field.Checkbox", { - fieldLabel: "Variable field", - labelAlign: "left", - }); - - me.plotManagementFieldCreator.add([me.restrictByFieldCreator, me.valuesFieldCreator, me.variableFieldCreator]); - - // ------------------------------------------------------------------------------------- - - me.plotManagementViewOptions = new Ext.create("Ext.panel.Panel", { - region: "east", - floatable: false, - layout: "anchor", - header: false, - width: 350, - bodyPadding: 5, - dockedItems: [ - { - dock: "top", - xtype: "toolbar", - border: false, - layout: { - pack: "center", - }, - items: [ - "->", - { - xtype: "button", - text: "Test View", - handler: function () { - me.oprTestView(); - }, - }, - ], - }, - ], - }); - - me.checkGroupByViewOptions = new Ext.create("Ext.form.CheckboxGroup", { - columns: 1, - vertical: true, - items: [ - { - boxLabel: "Site", - name: "rb", - inputValue: "sources.site", - }, - { - boxLabel: "Component type", - name: "rb", - inputValue: "sources.componentType", - checked: true, - }, - { - boxLabel: "Component location", - name: "rb", - inputValue: "sources.componentLocation", - }, - { - boxLabel: "Component name", - name: "rb", - inputValue: "sources.componentName", - }, - { - boxLabel: "Activity", - name: "rb", - inputValue: "activities.description", - }, - { - boxLabel: "Activity category", - name: "rb", - inputValue: "activities.category", - }, - ], - }); - - me.txtActivityLabelViewOptions = Ext.create("Ext.form.field.Text", { - fieldLabel: "Activities label", - labelAlign: "left", - value: "$DESCRIPTION", - anchor: "100%", - }); - - me.txtViewNameViewOptions = Ext.create("Ext.form.field.Text", { - fieldLabel: "View name", - labelAlign: "left", - anchor: "100%", - }); - - me.txtStackActivityViewOptions = Ext.create("Ext.form.field.Checkbox", { - fieldLabel: "Stack activities", - labelAlign: "left", - }); - - me.plotManagementViewOptions.add([ - { - xtype: "fieldset", - columnWidth: 0.5, - title: "Group plots by", - collapsible: true, - items: [me.checkGroupByViewOptions], - }, - me.txtActivityLabelViewOptions, - me.txtStackActivityViewOptions, - me.txtViewNameViewOptions, - ]); - - // ------------------------------------------------------------------------------------- - - me.contextTreeMenu = new Ext.menu.Menu({ - width: 150, - items: [ - { - text: "Delete", - iconCls: "dirac-icon-delete", - listeners: { - click: function () { - var oNode = me.contextTreeMenu.node; - - if (oNode.isLeaf()) { - oNode = oNode.parentNode; - } - - var sType = oNode.data.text; - - me.restrictByFieldCreator.store.add({ - value: me.viewDefinitionData[sType].value, - text: sType, - }); - - if (me.viewDefinitionData[sType].value in me.viewDefinitionDataForServer) { - delete me.viewDefinitionDataForServer[me.viewDefinitionData[sType].value]; - } else { - Ext.Array.remove(me.viewDefinitionDataForServerVariable, me.viewDefinitionData[sType].value); - } - - delete me.viewDefinitionData[sType]; - - var oParentNode = oNode.parentNode; - oParentNode.removeChild(oNode); - }, - }, - }, - ], - moduleObject: me, - }); - - me.plotManagementViewTreeStore = Ext.create("Ext.data.TreeStore", { - proxy: { - type: "localstorage", - id: me.id + "treeStoreLocalStorage", - }, - root: { - text: "View Definition", - }, - }); - - me.plotManagementViewTree = new Ext.create("Ext.tree.Panel", { - region: "center", - store: me.plotManagementViewTreeStore, - header: false, - listeners: { - beforeitemcontextmenu: function (oView, oNode, item, index, e, eOpts) { - e.preventDefault(); - if (oNode.data.id != "root") { - me.contextTreeMenu.node = oNode; - me.contextTreeMenu.showAt(e.getXY()); - } - }, - }, - }); - - // ------------------------------------------------------------------------------------- - oTopPanel.add([me.plotManagementFieldCreator, me.plotManagementViewOptions, me.plotManagementViewTree]); - me.plotManagementMainPanel.add([me.plotManagementListPanel, oTopPanel]); - - me.mainPanel.add(me.plotManagementMainPanel); - }, - - __buildPlotViewer: function () { - var me = this; - - me.plotViewerMainPanel = new Ext.create("Ext.panel.Panel", { - floatable: false, - layout: "border", - header: false, - border: false, - defaults: { - collapsible: true, - split: true, - }, - }); - - Ext.Ajax.request({ - url: GLOBAL.BASE_URL + "ActivityMonitor/getStaticPlotViews", - scope: me, - success: function (response) { - var me = this; - var response = Ext.JSON.decode(response.responseText); - - me.plotViewerListPanel.reconfigure( - new Ext.data.ArrayStore({ - fields: ["id", "name", "variable_fields"], - data: response.result, - }), - undefined - ); - }, - }); - - me.plotViewerListPanel = Ext.create("Ext.grid.Panel", { - region: "west", - width: 250, - store: null, - header: false, - stateful: true, - stateId: "ActivityViewList", - viewConfig: { - stripeRows: true, - enableTextSelection: true, - }, - columns: [ - { - header: "Click on a view to plot it", - sortable: true, - dataIndex: "name", - flex: 1, - }, - ], - listeners: { - cellclick: function (oTable, td, cellIndex, record, tr, rowIndex, e, eOpts) { - me.plotViewerResultPanel.removeAll(); - - var oNewPlots = me.__buildPlotView(record.get("name"), ""); - - me.plotViewerResultPanel.add(oNewPlots); - }, - }, - }); - - me.plotViewerResultPanel = new Ext.create("Ext.panel.Panel", { - floatable: false, - region: "center", - layout: "border", - header: false, - border: false, - items: [], - }); - - me.plotViewerMainPanel.add([me.plotViewerListPanel, me.plotViewerResultPanel]); - me.mainPanel.add([me.plotViewerMainPanel]); - }, - - __buildPlotView: function (sViewId, sVariableData) { - var me = this; - - var oMainPanel = new Ext.create("Ext.panel.Panel", { - floatable: false, - region: "center", - layout: "border", - header: false, - items: [], - viewId: sViewId, - }); - - var oLeftPanel = new Ext.create("Ext.panel.Panel", { - title: "Activity view options", - floatable: false, - region: "west", - layout: "anchor", - width: 300, - bodyPadding: 10, - items: [], - }); - - var oRightPanel = new Ext.create("Ext.panel.Panel", { - floatable: false, - region: "center", - header: false, - autoScroll: true, - layout: { - type: "table", - columns: 1, - }, - }); - - var oCalenFrom = new Ext.create("Ext.form.field.Date", { - width: 100, - format: "Y-m-d", - fieldLabel: "From", - labelAlign: "left", - hidden: true, - anchor: "100%", - }); - - var oCalenTo = new Ext.create("Ext.form.field.Date", { - width: 100, - format: "Y-m-d", - fieldLabel: "To", - labelAlign: "left", - hidden: true, - anchor: "100%", - }); - - var oTimeSpan = new Ext.create("Ext.form.field.ComboBox", { - labelAlign: "left", - fieldLabel: "Time Span", - editable: false, - store: new Ext.data.ArrayStore({ - fields: ["value", "text"], - data: [ - [3600, "Last Hour"], - [86400, "Last Day"], - [604800, "Last Week"], - [2592000, "Last Month"], - [-1, "Manual Selection"], - ], - }), - displayField: "text", - valueField: "value", - anchor: "100%", - value: 86400, - listeners: { - change: function (field, newValue, oldValue, eOpts) { - oCalenFrom.hide(); - oCalenTo.hide(); - - switch (newValue) { - case -1: - oCalenFrom.show(); - oCalenTo.show(); - break; - } - }, - }, - }); - - var oPlotSize = new Ext.create("Ext.form.field.ComboBox", { - labelAlign: "left", - fieldLabel: "Plot Size", - editable: false, - store: new Ext.data.ArrayStore({ - fields: ["value", "text"], - data: [ - [0, "Small"], - [1, "Medium"], - [2, "Big"], - [3, "Very Big"], - ], - }), - displayField: "text", - valueField: "value", - anchor: "100%", - value: 1, - }); - - oLeftPanel.add([oTimeSpan, oCalenFrom, oCalenTo, oPlotSize]); - - var oToolbar = new Ext.create("Ext.toolbar.Toolbar", { - dock: "bottom", - border: false, - layout: { - pack: "center", - }, - items: [], - }); - - var oSubmitBtn = new Ext.Button({ - text: "Submit", - margin: 3, - iconCls: "dirac-icon-submit", - handler: function () { - oRightPanel.setLoading(true); - var oParams = {}; - var bValid = true; - - oParams["id"] = sViewId; - - if (oTimeSpan.getValue() == -1) { - if (oCalenFrom.getValue() == null || Ext.Date.format(oCalenFrom.getValue(), "Y-m-d") == "") { - GLOBAL.APP.CF.alert("Select a from date", "warning"); - bValid = false; - } - - if (oCalenTo.getValue() == null || Ext.Date.format(oCalenTo.getValue(), "Y-m-d") == "") { - GLOBAL.APP.CF.alert("Select a to date", "warning"); - bValid = false; - } - - oParams["timespan"] = -1; - oParams["fromDate"] = Ext.Date.format(oCalenFrom.getValue(), "Y-m-d"); - oParams["toDate"] = Ext.Date.format(oCalenTo.getValue(), "Y-m-d"); - } else { - oParams["timespan"] = oTimeSpan.getValue(); - } - - if (sVariableData) { - oParams["varData"] = Ext.encode(sVariableData); - } - - oParams["size"] = oPlotSize.getValue(); - - if (bValid) { - Ext.Ajax.request({ - url: GLOBAL.BASE_URL + "ActivityMonitor/plotView", - params: oParams, - scope: me, - success: function (response) { - oRightPanel.setLoading(false); - var me = this; - var response = Ext.JSON.decode(response.responseText); - - if (response.success == "true") { - var plotsList = response.data; - if (plotsList.length) { - oRightPanel.removeAll(); - - for (var i = 0; i < plotsList.length; i++) { - var oNewImage = Ext.create("Ext.Img", { - region: "center", - src: GLOBAL.BASE_URL + "ActivityMonitor/getPlotImg?file=" + plotsList[i], - }); - - oRightPanel.add(oNewImage); - } - } - } else { - GLOBAL.APP.CF.alert(response.error, "warning"); - } - }, - }); - } - }, - }); - - var oResetBtn = new Ext.Button({ - text: "Reset", - margin: 3, - iconCls: "dirac-icon-reset", - handler: function () {}, - }); - - oToolbar.add([oSubmitBtn, oResetBtn]); - - oLeftPanel.addDocked([oToolbar]); - - oMainPanel.add([oLeftPanel, oRightPanel]); - - return oMainPanel; - }, - - generateViewRequest: function () { - var me = this; - - if (me.viewDefinitionDataForServer.length == 0) { - GLOBAL.APP.CF.alert("Select at least one non variable restriction", "warning"); - return; - } - - var oGrouping = me.checkGroupByViewOptions.getValue().rb; - - var sActDesc = me.txtActivityLabelViewOptions.getValue(); - if (!sActDesc) { - GLOBAL.APP.CF.alert("Write the activities description", "warning"); - return; - } - - var bStack = false; - if (me.txtStackActivityViewOptions.getValue()) var bStack = true; - - return Ext.JSON.encode({ - groupBy: oGrouping, - definition: me.viewDefinitionDataForServer, - variable: me.viewDefinitionDataForServerVariable, - stacked: bStack, - label: sActDesc, - }); - }, - - oprTestView: function () { - var me = this; - - var sViewRequest = me.generateViewRequest(); - - if (!sViewRequest) return; - - var sViewName = Ext.util.Format.trim(me.txtViewNameViewOptions.getValue()); - - if (sViewName.length == 0) { - GLOBAL.APP.CF.alert("The name of the view is missing.", "warning"); - return; - } - - me.getContainer().body.mask("Wait ..."); - Ext.Ajax.request({ - url: GLOBAL.BASE_URL + "ActivityMonitor/tryView", - success: function (response) { - var response = Ext.JSON.decode(response.responseText); - - if (response.success == "true") { - var plotsList = response.images; - if (plotsList.length) { - var oWindow = me.getContainer().createChildWindow(sViewName, false, 700, 500); - - var oPlotContainer = Ext.create("Ext.panel.Panel", { - floatable: false, - region: "center", - header: false, - autoScroll: true, - layout: { - type: "table", - columns: 1, - }, - dockedItems: [ - { - xtype: "toolbar", - dock: "top", - items: [ - { - xtype: "button", - text: "Save view", - handler: function () { - var sViewRequest = me.generateViewRequest(); - - if (!sViewRequest) return; - - var sViewName = Ext.util.Format.trim(me.txtViewNameViewOptions.getValue()); - - if (sViewName.length == 0) { - GLOBAL.APP.CF.alert("The name of the view is missing.", "warning"); - return; - } - - me.getContainer().body.mask("Wait ..."); - Ext.Ajax.request({ - url: GLOBAL.BASE_URL + "ActivityMonitor/saveView", - success: function (response) { - var response = Ext.JSON.decode(response.responseText); - - if (response.success == "true") { - me.plotManagementListPanel.store.load(); - } else { - GLOBAL.APP.CF.alert("Error: " + response.error, "warning"); - } - - me.getContainer().body.unmask(); - }, - failure: function (oRequest) { - GLOBAL.APP.CF.showAjaxErrorMessage(response); - me.getContainer().body.unmask(); - }, - params: { - plotRequest: sViewRequest, - viewName: sViewName, - }, - }); - }, - }, - ], - }, - ], - }); - - for (var i = 0; i < plotsList.length; i++) { - var oNewImage = Ext.create("Ext.Img", { - src: GLOBAL.BASE_URL + "ActivityMonitor/getPlotImg?file=" + plotsList[i], - }); - - oPlotContainer.add(oNewImage); - } - - oWindow.add(oPlotContainer); - - oWindow.show(); - } - } else { - GLOBAL.APP.CF.alert(response.error, "warning"); - } - me.getContainer().body.unmask(); - }, - failure: function (oRequest) { - GLOBAL.APP.CF.alert("Error: " + oRequest.statusText, "warning"); - me.getContainer().body.unmask(); - }, - params: { - plotRequest: sViewRequest, - timeLength: "day", - viewName: sViewName, - }, - }); - }, - __buildSystemViewer: function () { - var me = this; - - me.systemPlotViewerMainPanel = new Ext.create("Ext.panel.Panel", { - floatable: false, - layout: "border", - header: false, - border: false, - defaults: { - collapsible: true, - split: true, - }, - }); - - me.systemPlotsTreeStore = Ext.create("Ext.data.TreeStore", { - model: "DIRAC.ActivityMonitor.classes.ActivityTreeModel", - fields: ["text", "component"], - scope: me, - proxy: { - type: "ajax", - url: GLOBAL.BASE_URL + "ActivityMonitor/getDynamicPlotViews", - }, - root: { - text: "/", - id: "/Systems", - expanded: true, - }, - folderSort: true, - sorters: [ - { - property: "text", - direction: "ASC", - }, - ], - listeners: { - collapse: function (oNode, eOpts) { - me.__oprUnsetPathAsExpanded(me.__getNodePath(oNode), true); - }, - expand: function (oNode, eOpts) { - me.__oprPathAsExpanded(me.__getNodePath(oNode), true); - }, - scope: me, - }, - }); - - me.systemPlotViewerTreePanel = Ext.create("Ext.tree.TreePanel", { - region: "west", - width: 250, - store: me.systemPlotsTreeStore, - listeners: { - itemclick: function (record, item, index, e, eOpts) { - console.log(record); - if (item.get("component") != "") { - me.systemPlotViewerResultPanel.removeAll(); - var varData = { - "sources.componentName": item.get("component"), - }; - var oNewPlots = me.__buildPlotView("Dynamic component view", varData); - - me.systemPlotViewerResultPanel.add(oNewPlots); - } - }, - }, - }); - - me.systemPlotViewerResultPanel = new Ext.create("Ext.panel.Panel", { - floatable: false, - region: "center", - layout: "border", - header: false, - border: false, - items: [], - }); - - me.systemPlotViewerMainPanel.add([me.systemPlotViewerTreePanel, me.systemPlotViewerResultPanel]); - me.mainPanel.add([me.systemPlotViewerMainPanel]); - }, - __oprUnsetPathAsExpanded: function (sPath) { - var me = this; - var oParts = sPath.split("/"); - - // The first element is always empty - var oTemp = me.expansionState; - var oStartIndex = 0; - - if (sPath == "/") oStartIndex = 1; - - for (var i = oStartIndex; i < oParts.length; i++) { - if (oParts[i] in oTemp) { - if (i == oParts.length - 1) { - delete oTemp[oParts[i]]; - } else { - oTemp = oTemp[oParts[i]]; - } - } - } - }, - - __oprPathAsExpanded: function (sPath, bInsertIntoStructure) { - var me = this; - var oParts = sPath.split("/"); - - // The first element is always empty - var oTemp = me.expansionState; - var oFound = true; - - var oStartIndex = 0; - - if (sPath == "/") oStartIndex = 1; - - for (var i = oStartIndex; i < oParts.length; i++) { - if (oParts[i] in oTemp) { - oTemp = oTemp[oParts[i]]; - } else { - oFound = false; - - if (bInsertIntoStructure) { - oTemp[oParts[i]] = {}; - } - - break; - } - } - - return oFound; - }, - __getNodePath: function (oNode) { - var sPath = ""; - var oCopyRefNode = oNode; - while (oCopyRefNode) { - if (oCopyRefNode.data.id) sPath = "/" + oCopyRefNode.data.id + sPath; - else break; - oCopyRefNode = oCopyRefNode.parentNode; - } - if (!sPath) return "/"; - return sPath; - }, -}); diff --git a/src/WebAppDIRAC/WebApp/static/DIRAC/ActivityMonitor/classes/ActivityTreeModel.js b/src/WebAppDIRAC/WebApp/static/DIRAC/ActivityMonitor/classes/ActivityTreeModel.js deleted file mode 100644 index b824f1e5d..000000000 --- a/src/WebAppDIRAC/WebApp/static/DIRAC/ActivityMonitor/classes/ActivityTreeModel.js +++ /dev/null @@ -1,5 +0,0 @@ -Ext.define("DIRAC.ActivityMonitor.classes.ActivityTreeModel", { - extend: "Ext.data.Model", - fields: ["text", "component"], - alias: "widget.activityTreemodel", -}); diff --git a/src/WebAppDIRAC/WebApp/static/DIRAC/ActivityMonitor/css/ActivityMonitor.css b/src/WebAppDIRAC/WebApp/static/DIRAC/ActivityMonitor/css/ActivityMonitor.css deleted file mode 100644 index 0cd02ef76..000000000 --- a/src/WebAppDIRAC/WebApp/static/DIRAC/ActivityMonitor/css/ActivityMonitor.css +++ /dev/null @@ -1,3 +0,0 @@ -.am-main-check-box { - margin: 3px 0px 3px 0px !important; -}