mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Add Sumo connector and related cloud tools
* Add cloud data icon * Add Sumo connector and related helper tools * Reorganize preferences and remove ssihub * Use timeout defined for Sumo
This commit is contained in:
parent
868e9916bc
commit
ffc1687cc7
@ -302,12 +302,7 @@ set(UNITY_EXCLUDE_FILES
|
|||||||
# forever is used as variable name, and this symbol is defined by Qt and
|
# forever is used as variable name, and this symbol is defined by Qt and
|
||||||
# used in precompiled headers
|
# used in precompiled headers
|
||||||
${ResInsight_SOURCE_DIR}/ThirdParty/gtest/gtest-all.cc
|
${ResInsight_SOURCE_DIR}/ThirdParty/gtest/gtest-all.cc
|
||||||
qrc_cafAnimControl.cpp
|
qrc_cafAnimControl.cpp qrc_ResInsight.cpp qrc_cafCommandFeatures.cpp
|
||||||
qrc_ResInsight.cpp
|
|
||||||
qrc_cafCommandFeatures.cpp
|
|
||||||
# Exclude files including opm-common
|
|
||||||
ProjectDataModel/RimVfpTableExtractor.cpp
|
|
||||||
ProjectDataModel/RimVfpPlot.cpp
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if(RESINSIGHT_ENABLE_UNITY_BUILD)
|
if(RESINSIGHT_ENABLE_UNITY_BUILD)
|
||||||
|
@ -287,6 +287,7 @@
|
|||||||
<file>regression-curve.svg</file>
|
<file>regression-curve.svg</file>
|
||||||
<file>padlock.svg</file>
|
<file>padlock.svg</file>
|
||||||
<file>warning.svg</file>
|
<file>warning.svg</file>
|
||||||
|
<file>cloud-and-server.svg</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/Shader">
|
<qresource prefix="/Shader">
|
||||||
<file>fs_CellFace.glsl</file>
|
<file>fs_CellFace.glsl</file>
|
||||||
|
2
ApplicationExeCode/Resources/cloud-and-server.svg
Normal file
2
ApplicationExeCode/Resources/cloud-and-server.svg
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M21.254 17.528A4.165 4.165 0 0 0 17.094 14a4.22 4.22 0 0 0-3.685 2.137 1.717 1.717 0 0 0-.534-.092 1.67 1.67 0 0 0-1.556 1.04A2.996 2.996 0 0 0 12 23h8.018A2.918 2.918 0 0 0 23 20.136a2.858 2.858 0 0 0-1.746-2.608zM19.994 22h-7.54l-.46-.003a1.995 1.995 0 0 1-.448-3.938l.506-.118.195-.481a.67.67 0 0 1 .628-.415.734.734 0 0 1 .225.043l.777.252.402-.711A3.231 3.231 0 0 1 17.094 15a3.18 3.18 0 0 1 3.17 2.67l.08.552.51.223A1.863 1.863 0 0 1 22 20.137 1.916 1.916 0 0 1 19.995 22zM11.5 2C6.78 2 2 3.03 2 5v12.58c0 1.64 2.676 2.695 6 3.123v-1.006c-3.16-.426-5-1.381-5-2.118v-6.248C4.643 12.429 8.082 13 11.5 13s6.857-.57 8.5-1.67v2.568a5.22 5.22 0 0 1 1 .856V5c0-1.97-4.78-3-9.5-3zM20 9.848C20 10.726 16.689 12 11.5 12S3 10.726 3 9.848V6.41C4.643 7.457 8.082 8 11.5 8s6.857-.543 8.5-1.589zM11.5 7C6 7 3 5.679 3 5s3-2 8.5-2S20 4.321 20 5s-3 2-8.5 2z"/><path fill="none" d="M0 0h24v24H0z"/></svg>
|
After Width: | Height: | Size: 1.1 KiB |
@ -11,6 +11,7 @@ set(SOURCE_GROUP_HEADER_FILES
|
|||||||
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesGrid.h
|
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesGrid.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesSystem.h
|
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesSystem.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesOsdu.h
|
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesOsdu.h
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesSumo.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaPorosityModel.h
|
${CMAKE_CURRENT_LIST_DIR}/RiaPorosityModel.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaSummaryCurveDefinition.h
|
${CMAKE_CURRENT_LIST_DIR}/RiaSummaryCurveDefinition.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaCurveSetDefinition.h
|
${CMAKE_CURRENT_LIST_DIR}/RiaCurveSetDefinition.h
|
||||||
@ -54,6 +55,7 @@ set(SOURCE_GROUP_SOURCE_FILES
|
|||||||
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesGrid.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesGrid.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesSystem.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesSystem.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesOsdu.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesOsdu.cpp
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RiaPreferencesSumo.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaPorosityModel.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RiaPorosityModel.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaSummaryCurveDefinition.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RiaSummaryCurveDefinition.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaCurveSetDefinition.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RiaCurveSetDefinition.cpp
|
||||||
|
@ -17,7 +17,10 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
#include "RiaApplication.h"
|
#include "RiaApplication.h"
|
||||||
|
|
||||||
|
#include "Cloud/RiaSumoConnector.h"
|
||||||
|
#include "Cloud/RiaSumoDefines.h"
|
||||||
#include "OsduImportCommands/RiaOsduConnector.h"
|
#include "OsduImportCommands/RiaOsduConnector.h"
|
||||||
|
|
||||||
#include "RiaArgumentParser.h"
|
#include "RiaArgumentParser.h"
|
||||||
#include "RiaBaseDefs.h"
|
#include "RiaBaseDefs.h"
|
||||||
#include "RiaFilePathTools.h"
|
#include "RiaFilePathTools.h"
|
||||||
@ -26,6 +29,7 @@
|
|||||||
#include "RiaImportEclipseCaseTools.h"
|
#include "RiaImportEclipseCaseTools.h"
|
||||||
#include "RiaLogging.h"
|
#include "RiaLogging.h"
|
||||||
#include "RiaPreferences.h"
|
#include "RiaPreferences.h"
|
||||||
|
#include "RiaPreferencesSumo.h"
|
||||||
#include "RiaPreferencesSystem.h"
|
#include "RiaPreferencesSystem.h"
|
||||||
#include "RiaProjectModifier.h"
|
#include "RiaProjectModifier.h"
|
||||||
#include "RiaSocketServer.h"
|
#include "RiaSocketServer.h"
|
||||||
@ -1710,3 +1714,25 @@ RiaOsduConnector* RiaApplication::makeOsduConnector()
|
|||||||
m_osduConnector = new RiaOsduConnector( RiuMainWindow::instance(), server, dataPartitionId, authority, scopes, clientId );
|
m_osduConnector = new RiaOsduConnector( RiuMainWindow::instance(), server, dataPartitionId, authority, scopes, clientId );
|
||||||
return m_osduConnector;
|
return m_osduConnector;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RiaSumoConnector* RiaApplication::makeSumoConnector()
|
||||||
|
{
|
||||||
|
if ( !m_sumoConnector )
|
||||||
|
{
|
||||||
|
auto sumoPrefs = preferences()->sumoPreferences();
|
||||||
|
const QString server = sumoPrefs->server();
|
||||||
|
const QString authority = sumoPrefs->authority();
|
||||||
|
const QString scopes = sumoPrefs->scopes();
|
||||||
|
const QString clientId = sumoPrefs->clientId();
|
||||||
|
|
||||||
|
m_sumoConnector = new RiaSumoConnector( RiuMainWindow::instance(), server, authority, scopes, clientId );
|
||||||
|
|
||||||
|
m_sumoConnector->setTokenDataFilePath( RiaSumoDefines::tokenPath() );
|
||||||
|
m_sumoConnector->importTokenFromFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_sumoConnector;
|
||||||
|
}
|
||||||
|
@ -69,6 +69,7 @@ class RiuPlotMainWindow;
|
|||||||
class RiuRecentFileActionProvider;
|
class RiuRecentFileActionProvider;
|
||||||
class RiaArgumentParser;
|
class RiaArgumentParser;
|
||||||
class RiaOsduConnector;
|
class RiaOsduConnector;
|
||||||
|
class RiaSumoConnector;
|
||||||
|
|
||||||
namespace caf
|
namespace caf
|
||||||
{
|
{
|
||||||
@ -202,6 +203,7 @@ public:
|
|||||||
virtual void showFormattedTextInMessageBoxOrConsole( const QString& errMsg ) = 0;
|
virtual void showFormattedTextInMessageBoxOrConsole( const QString& errMsg ) = 0;
|
||||||
|
|
||||||
RiaOsduConnector* makeOsduConnector();
|
RiaOsduConnector* makeOsduConnector();
|
||||||
|
RiaSumoConnector* makeSumoConnector();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Protected implementation specific overrides
|
// Protected implementation specific overrides
|
||||||
@ -259,4 +261,5 @@ protected:
|
|||||||
private:
|
private:
|
||||||
static RiaApplication* s_riaApplication;
|
static RiaApplication* s_riaApplication;
|
||||||
QPointer<RiaOsduConnector> m_osduConnector;
|
QPointer<RiaOsduConnector> m_osduConnector;
|
||||||
|
QPointer<RiaSumoConnector> m_sumoConnector;
|
||||||
};
|
};
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "RiaPreferencesGeoMech.h"
|
#include "RiaPreferencesGeoMech.h"
|
||||||
#include "RiaPreferencesGrid.h"
|
#include "RiaPreferencesGrid.h"
|
||||||
#include "RiaPreferencesSummary.h"
|
#include "RiaPreferencesSummary.h"
|
||||||
|
#include "RiaPreferencesSumo.h"
|
||||||
#include "RiaPreferencesSystem.h"
|
#include "RiaPreferencesSystem.h"
|
||||||
#include "RiaQDateTimeTools.h"
|
#include "RiaQDateTimeTools.h"
|
||||||
#include "RiaValidRegExpValidator.h"
|
#include "RiaValidRegExpValidator.h"
|
||||||
@ -146,9 +147,6 @@ RiaPreferences::RiaPreferences()
|
|||||||
|
|
||||||
CAF_PDM_InitField( &m_storeBackupOfProjectFile, "storeBackupOfProjectFile", true, "Store Backup of Project Files" );
|
CAF_PDM_InitField( &m_storeBackupOfProjectFile, "storeBackupOfProjectFile", true, "Store Backup of Project Files" );
|
||||||
|
|
||||||
CAF_PDM_InitField( &ssihubAddress, "ssihubAddress", QString( "http://" ), "SSIHUB Address" );
|
|
||||||
ssihubAddress.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::TOP );
|
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_defaultMeshModeType, "defaultMeshModeType", "Show Grid Lines" );
|
CAF_PDM_InitFieldNoDefault( &m_defaultMeshModeType, "defaultMeshModeType", "Show Grid Lines" );
|
||||||
CAF_PDM_InitField( &defaultGridLineColors, "defaultGridLineColors", RiaColorTables::defaultGridLineColor(), "Mesh Color" );
|
CAF_PDM_InitField( &defaultGridLineColors, "defaultGridLineColors", RiaColorTables::defaultGridLineColor(), "Mesh Color" );
|
||||||
CAF_PDM_InitField( &defaultFaultGridLineColors,
|
CAF_PDM_InitField( &defaultFaultGridLineColors,
|
||||||
@ -273,6 +271,9 @@ RiaPreferences::RiaPreferences()
|
|||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_osduPreferences, "osduPreferences", "osduPreferences" );
|
CAF_PDM_InitFieldNoDefault( &m_osduPreferences, "osduPreferences", "osduPreferences" );
|
||||||
m_osduPreferences = new RiaPreferencesOsdu;
|
m_osduPreferences = new RiaPreferencesOsdu;
|
||||||
|
|
||||||
|
CAF_PDM_InitFieldNoDefault( &m_sumoPreferences, "sumoPreferences", "sumoPreferences" );
|
||||||
|
m_sumoPreferences = new RiaPreferencesSumo;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -370,8 +371,15 @@ void RiaPreferences::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
|
|||||||
viewsGroup->add( &m_showInfoBox );
|
viewsGroup->add( &m_showInfoBox );
|
||||||
viewsGroup->add( &m_showGridBox, { .newRow = false, .totalColumnSpan = 1 } );
|
viewsGroup->add( &m_showGridBox, { .newRow = false, .totalColumnSpan = 1 } );
|
||||||
|
|
||||||
|
caf::PdmUiGroup* loggingGroup = uiOrdering.addNewGroup( "Logging and Backup" );
|
||||||
|
loggingGroup->add( &m_storeBackupOfProjectFile );
|
||||||
|
loggingGroup->add( &m_loggerFilename );
|
||||||
|
loggingGroup->add( &m_loggerFlushInterval );
|
||||||
|
loggingGroup->add( &m_loggerTrapSignalAndFlush );
|
||||||
|
m_loggerTrapSignalAndFlush.uiCapability()->setUiReadOnly( !m_loggerFilename().first );
|
||||||
|
m_loggerFlushInterval.uiCapability()->setUiReadOnly( !m_loggerFilename().first );
|
||||||
|
|
||||||
caf::PdmUiGroup* otherGroup = uiOrdering.addNewGroup( "Other" );
|
caf::PdmUiGroup* otherGroup = uiOrdering.addNewGroup( "Other" );
|
||||||
otherGroup->add( &ssihubAddress );
|
|
||||||
otherGroup->add( &holoLensDisableCertificateVerification );
|
otherGroup->add( &holoLensDisableCertificateVerification );
|
||||||
otherGroup->add( &m_useUndoRedo );
|
otherGroup->add( &m_useUndoRedo );
|
||||||
}
|
}
|
||||||
@ -466,17 +474,11 @@ void RiaPreferences::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
|
|||||||
otherGroup->add( &m_gridCalculationExpressionFolder );
|
otherGroup->add( &m_gridCalculationExpressionFolder );
|
||||||
otherGroup->add( &m_summaryCalculationExpressionFolder );
|
otherGroup->add( &m_summaryCalculationExpressionFolder );
|
||||||
|
|
||||||
caf::PdmUiGroup* loggingGroup = uiOrdering.addNewGroup( "Logging and Backup" );
|
caf::PdmUiGroup* osduGroup = uiOrdering.addNewGroup( "OSDU" );
|
||||||
loggingGroup->add( &m_storeBackupOfProjectFile );
|
m_osduPreferences()->uiOrdering( uiConfigName, *osduGroup );
|
||||||
loggingGroup->add( &m_loggerFilename );
|
|
||||||
loggingGroup->add( &m_loggerFlushInterval );
|
caf::PdmUiGroup* sumoGroup = uiOrdering.addNewGroup( "SUMO" );
|
||||||
loggingGroup->add( &m_loggerTrapSignalAndFlush );
|
m_sumoPreferences()->uiOrdering( uiConfigName, *sumoGroup );
|
||||||
m_loggerTrapSignalAndFlush.uiCapability()->setUiReadOnly( !m_loggerFilename().first );
|
|
||||||
m_loggerFlushInterval.uiCapability()->setUiReadOnly( !m_loggerFilename().first );
|
|
||||||
}
|
|
||||||
else if ( uiConfigName == RiaPreferences::tabNameOsdu() )
|
|
||||||
{
|
|
||||||
m_osduPreferences()->uiOrdering( uiConfigName, uiOrdering );
|
|
||||||
}
|
}
|
||||||
else if ( RiaApplication::enableDevelopmentFeatures() && uiConfigName == RiaPreferences::tabNameSystem() )
|
else if ( RiaApplication::enableDevelopmentFeatures() && uiConfigName == RiaPreferences::tabNameSystem() )
|
||||||
{
|
{
|
||||||
@ -605,14 +607,6 @@ QString RiaPreferences::tabNameSystem()
|
|||||||
return "System";
|
return "System";
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
QString RiaPreferences::tabNameOsdu()
|
|
||||||
{
|
|
||||||
return "Osdu";
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -653,7 +647,6 @@ QStringList RiaPreferences::tabNames()
|
|||||||
names << tabNameGeomech();
|
names << tabNameGeomech();
|
||||||
#endif
|
#endif
|
||||||
names << tabNameImportExport();
|
names << tabNameImportExport();
|
||||||
names << tabNameOsdu();
|
|
||||||
|
|
||||||
if ( RiaApplication::enableDevelopmentFeatures() )
|
if ( RiaApplication::enableDevelopmentFeatures() )
|
||||||
{
|
{
|
||||||
@ -1028,6 +1021,14 @@ RiaPreferencesOsdu* RiaPreferences::osduPreferences() const
|
|||||||
return m_osduPreferences();
|
return m_osduPreferences();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RiaPreferencesSumo* RiaPreferences::sumoPreferences() const
|
||||||
|
{
|
||||||
|
return m_sumoPreferences();
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -46,6 +46,7 @@ class RiaPreferencesGeoMech;
|
|||||||
class RiaPreferencesSystem;
|
class RiaPreferencesSystem;
|
||||||
class RiaPreferencesOsdu;
|
class RiaPreferencesOsdu;
|
||||||
class RiaPreferencesGrid;
|
class RiaPreferencesGrid;
|
||||||
|
class RiaPreferencesSumo;
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
@ -129,6 +130,7 @@ public:
|
|||||||
RiaPreferencesSummary* summaryPreferences() const;
|
RiaPreferencesSummary* summaryPreferences() const;
|
||||||
RiaPreferencesSystem* systemPreferences() const;
|
RiaPreferencesSystem* systemPreferences() const;
|
||||||
RiaPreferencesOsdu* osduPreferences() const;
|
RiaPreferencesOsdu* osduPreferences() const;
|
||||||
|
RiaPreferencesSumo* sumoPreferences() const;
|
||||||
RiaPreferencesGrid* gridPreferences() const;
|
RiaPreferencesGrid* gridPreferences() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -139,8 +141,6 @@ public:
|
|||||||
caf::PdmField<QString> scriptEditorExecutable;
|
caf::PdmField<QString> scriptEditorExecutable;
|
||||||
caf::PdmField<bool> showPythonDebugInfo;
|
caf::PdmField<bool> showPythonDebugInfo;
|
||||||
|
|
||||||
caf::PdmField<QString> ssihubAddress;
|
|
||||||
|
|
||||||
caf::PdmField<cvf::Color3f> defaultGridLineColors;
|
caf::PdmField<cvf::Color3f> defaultGridLineColors;
|
||||||
caf::PdmField<cvf::Color3f> defaultFaultGridLineColors;
|
caf::PdmField<cvf::Color3f> defaultFaultGridLineColors;
|
||||||
caf::PdmField<cvf::Color3f> defaultViewerBackgroundColor;
|
caf::PdmField<cvf::Color3f> defaultViewerBackgroundColor;
|
||||||
@ -171,7 +171,6 @@ private:
|
|||||||
static QString tabNamePlotting();
|
static QString tabNamePlotting();
|
||||||
static QString tabNameScripting();
|
static QString tabNameScripting();
|
||||||
static QString tabNameSystem();
|
static QString tabNameSystem();
|
||||||
static QString tabNameOsdu();
|
|
||||||
static QString tabNameImportExport();
|
static QString tabNameImportExport();
|
||||||
|
|
||||||
static double defaultMarginSize( QPageSize::PageSizeId pageSizeId );
|
static double defaultMarginSize( QPageSize::PageSizeId pageSizeId );
|
||||||
@ -238,6 +237,7 @@ private:
|
|||||||
|
|
||||||
// Osdu settings
|
// Osdu settings
|
||||||
caf::PdmChildField<RiaPreferencesOsdu*> m_osduPreferences;
|
caf::PdmChildField<RiaPreferencesOsdu*> m_osduPreferences;
|
||||||
|
caf::PdmChildField<RiaPreferencesSumo*> m_sumoPreferences;
|
||||||
|
|
||||||
// 3d view
|
// 3d view
|
||||||
caf::PdmField<caf::AppEnum<RiaDefines::MeshModeType>> m_defaultMeshModeType;
|
caf::PdmField<caf::AppEnum<RiaDefines::MeshModeType>> m_defaultMeshModeType;
|
||||||
|
75
ApplicationLibCode/Application/RiaPreferencesSumo.cpp
Normal file
75
ApplicationLibCode/Application/RiaPreferencesSumo.cpp
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2024 Equinor ASA
|
||||||
|
//
|
||||||
|
// ResInsight is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
//
|
||||||
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "RiaApplication.h"
|
||||||
|
|
||||||
|
#include "RiaPreferences.h"
|
||||||
|
#include "RiaPreferencesSumo.h"
|
||||||
|
|
||||||
|
CAF_PDM_SOURCE_INIT( RiaPreferencesSumo, "RiaPreferencesSumo" );
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RiaPreferencesSumo::RiaPreferencesSumo()
|
||||||
|
{
|
||||||
|
CAF_PDM_InitFieldNoDefault( &m_server, "server", "Server" );
|
||||||
|
CAF_PDM_InitFieldNoDefault( &m_authority, "authority", "Authority" );
|
||||||
|
CAF_PDM_InitFieldNoDefault( &m_scopes, "scopes", "Scopes" );
|
||||||
|
CAF_PDM_InitFieldNoDefault( &m_clientId, "clientId", "Client Id" );
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RiaPreferencesSumo* RiaPreferencesSumo::current()
|
||||||
|
{
|
||||||
|
return RiaApplication::instance()->preferences()->sumoPreferences();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString RiaPreferencesSumo::server() const
|
||||||
|
{
|
||||||
|
return m_server;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString RiaPreferencesSumo::authority() const
|
||||||
|
{
|
||||||
|
return m_authority;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString RiaPreferencesSumo::scopes() const
|
||||||
|
{
|
||||||
|
return m_scopes;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString RiaPreferencesSumo::clientId() const
|
||||||
|
{
|
||||||
|
return m_clientId;
|
||||||
|
}
|
46
ApplicationLibCode/Application/RiaPreferencesSumo.h
Normal file
46
ApplicationLibCode/Application/RiaPreferencesSumo.h
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2024 Equinor ASA
|
||||||
|
//
|
||||||
|
// ResInsight is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
//
|
||||||
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "cafPdmField.h"
|
||||||
|
#include "cafPdmObject.h"
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
class RiaPreferencesSumo : public caf::PdmObject
|
||||||
|
{
|
||||||
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
|
public:
|
||||||
|
RiaPreferencesSumo();
|
||||||
|
|
||||||
|
static RiaPreferencesSumo* current();
|
||||||
|
|
||||||
|
QString server() const;
|
||||||
|
QString authority() const;
|
||||||
|
QString scopes() const;
|
||||||
|
QString clientId() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
caf::PdmField<QString> m_server;
|
||||||
|
caf::PdmField<QString> m_authority;
|
||||||
|
caf::PdmField<QString> m_scopes;
|
||||||
|
caf::PdmField<QString> m_clientId;
|
||||||
|
};
|
@ -0,0 +1,17 @@
|
|||||||
|
set(SOURCE_GROUP_HEADER_FILES
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RiaSumoConnector.h
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RiaSumoDefines.h
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RiaConnectorTools.h
|
||||||
|
)
|
||||||
|
|
||||||
|
set(SOURCE_GROUP_SOURCE_FILES
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RiaSumoConnector.cpp
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RiaSumoDefines.cpp
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RiaConnectorTools.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
list(APPEND QT_MOC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/RiaSumoConnector.h)
|
||||||
|
|
||||||
|
list(APPEND CODE_HEADER_FILES ${SOURCE_GROUP_HEADER_FILES})
|
||||||
|
|
||||||
|
list(APPEND CODE_SOURCE_FILES ${SOURCE_GROUP_SOURCE_FILES})
|
@ -0,0 +1,80 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2024- Equinor ASA
|
||||||
|
//
|
||||||
|
// ResInsight is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
//
|
||||||
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "RiaConnectorTools.h"
|
||||||
|
|
||||||
|
#include <QFile>
|
||||||
|
#include <QJsonDocument>
|
||||||
|
#include <QJsonObject>
|
||||||
|
#include <QOAuth2AuthorizationCodeFlow>
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString RiaConnectorTools::tokenDataAsJson( QOAuth2AuthorizationCodeFlow* authCodeFlow )
|
||||||
|
{
|
||||||
|
QJsonObject obj;
|
||||||
|
obj.insert( "token", authCodeFlow->token() );
|
||||||
|
obj.insert( "refreshToken", authCodeFlow->refreshToken() );
|
||||||
|
|
||||||
|
QJsonDocument doc( obj );
|
||||||
|
return doc.toJson( QJsonDocument::Indented );
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiaConnectorTools::initializeTokenDataFromJson( QOAuth2AuthorizationCodeFlow* authCodeFlow, const QString& tokenDataJson )
|
||||||
|
{
|
||||||
|
QJsonDocument doc = QJsonDocument::fromJson( tokenDataJson.toUtf8() );
|
||||||
|
QJsonObject obj = doc.object();
|
||||||
|
|
||||||
|
authCodeFlow->setToken( obj["token"].toString() );
|
||||||
|
authCodeFlow->setRefreshToken( obj["refreshToken"].toString() );
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiaConnectorTools::writeTokenData( const QString& filePath, const QString& tokenDataJson )
|
||||||
|
{
|
||||||
|
QFile file( filePath );
|
||||||
|
if ( file.open( QIODevice::WriteOnly ) )
|
||||||
|
{
|
||||||
|
QTextStream stream( &file );
|
||||||
|
stream << tokenDataJson;
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString RiaConnectorTools::readTokenData( const QString& filePath )
|
||||||
|
{
|
||||||
|
QFile file( filePath );
|
||||||
|
if ( file.open( QIODevice::ReadOnly ) )
|
||||||
|
{
|
||||||
|
QTextStream stream( &file );
|
||||||
|
QString result = stream.readAll();
|
||||||
|
file.close();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2024- Equinor ASA
|
||||||
|
//
|
||||||
|
// ResInsight is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
//
|
||||||
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
class QOAuth2AuthorizationCodeFlow;
|
||||||
|
|
||||||
|
namespace RiaConnectorTools
|
||||||
|
{
|
||||||
|
QString tokenDataAsJson( QOAuth2AuthorizationCodeFlow* authCodeFlow );
|
||||||
|
void initializeTokenDataFromJson( QOAuth2AuthorizationCodeFlow* authCodeFlow, const QString& tokenDataJson );
|
||||||
|
void writeTokenData( const QString& filePath, const QString& tokenDataJson );
|
||||||
|
QString readTokenData( const QString& filePath );
|
||||||
|
} // namespace RiaConnectorTools
|
1110
ApplicationLibCode/Application/Tools/Cloud/RiaSumoConnector.cpp
Normal file
1110
ApplicationLibCode/Application/Tools/Cloud/RiaSumoConnector.cpp
Normal file
File diff suppressed because it is too large
Load Diff
182
ApplicationLibCode/Application/Tools/Cloud/RiaSumoConnector.h
Normal file
182
ApplicationLibCode/Application/Tools/Cloud/RiaSumoConnector.h
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2024 Equinor ASA
|
||||||
|
//
|
||||||
|
// ResInsight is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
//
|
||||||
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "RiaSumoDefines.h"
|
||||||
|
|
||||||
|
#include <QByteArray>
|
||||||
|
#include <QNetworkAccessManager>
|
||||||
|
#include <QOAuth2AuthorizationCodeFlow>
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
using SumoObjectId = QString;
|
||||||
|
|
||||||
|
struct SumoAsset
|
||||||
|
{
|
||||||
|
SumoAssetId assetId;
|
||||||
|
|
||||||
|
QString kind;
|
||||||
|
QString name;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SumoCase
|
||||||
|
{
|
||||||
|
SumoCaseId caseId;
|
||||||
|
|
||||||
|
QString kind;
|
||||||
|
QString name;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SumoRedirect
|
||||||
|
{
|
||||||
|
SumoObjectId objectId;
|
||||||
|
QString blobName;
|
||||||
|
QString url;
|
||||||
|
QString redirectBaseUri;
|
||||||
|
QString redirectAuth;
|
||||||
|
QByteArray contents;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SumoEnsemble
|
||||||
|
{
|
||||||
|
SumoCaseId caseId;
|
||||||
|
QString name;
|
||||||
|
};
|
||||||
|
|
||||||
|
//==================================================================================================
|
||||||
|
///
|
||||||
|
//==================================================================================================
|
||||||
|
class RiaSumoConnector : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
RiaSumoConnector( QObject* parent, const QString& server, const QString& authority, const QString& scopes, const QString& clientId );
|
||||||
|
~RiaSumoConnector() override;
|
||||||
|
|
||||||
|
QString token() const;
|
||||||
|
|
||||||
|
void importTokenFromFile();
|
||||||
|
void setTokenDataFilePath( const QString& filePath );
|
||||||
|
|
||||||
|
void requestAssets();
|
||||||
|
void requestAssetsBlocking();
|
||||||
|
|
||||||
|
void requestCasesForField( const QString& fieldName );
|
||||||
|
void requestCasesForFieldBlocking( const QString& fieldName );
|
||||||
|
|
||||||
|
void requestEnsembleByCasesId( const SumoCaseId& caseId );
|
||||||
|
void requestEnsembleByCasesIdBlocking( const SumoCaseId& caseId );
|
||||||
|
|
||||||
|
void requestVectorNamesForEnsemble( const SumoCaseId& caseId, const QString& ensembleName );
|
||||||
|
void requestVectorNamesForEnsembleBlocking( const SumoCaseId& caseId, const QString& ensembleName );
|
||||||
|
|
||||||
|
void requestRealizationIdsForEnsemble( const SumoCaseId& caseId, const QString& ensembleName );
|
||||||
|
void requestRealizationIdsForEnsembleBlocking( const SumoCaseId& caseId, const QString& ensembleName );
|
||||||
|
|
||||||
|
void requestBlobIdForEnsemble( const SumoCaseId& caseId, const QString& ensembleName, const QString& vectorName );
|
||||||
|
void requestBlobIdForEnsembleBlocking( const SumoCaseId& caseId, const QString& ensembleName, const QString& vectorName );
|
||||||
|
|
||||||
|
void requestBlobDownload( const QString& blobId );
|
||||||
|
void requestBlobByRedirectUri( const QString& blobId, const QString& redirectUri );
|
||||||
|
|
||||||
|
QByteArray requestParquetDataBlocking( const SumoCaseId& caseId, const QString& ensembleName, const QString& vectorName );
|
||||||
|
|
||||||
|
QString server() const;
|
||||||
|
|
||||||
|
std::vector<SumoAsset> assets() const;
|
||||||
|
std::vector<SumoCase> cases() const;
|
||||||
|
std::vector<QString> ensembleNamesForCase( const SumoCaseId& caseId ) const;
|
||||||
|
std::vector<QString> vectorNames() const;
|
||||||
|
std::vector<QString> realizationIds() const;
|
||||||
|
std::vector<QString> blobUrls() const;
|
||||||
|
std::vector<SumoRedirect> blobContents() const;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void requestToken();
|
||||||
|
|
||||||
|
void parseAssets( QNetworkReply* reply );
|
||||||
|
void parseEnsembleNames( QNetworkReply* reply, const SumoCaseId& caseId );
|
||||||
|
void parseCases( QNetworkReply* reply );
|
||||||
|
void parseVectorNames( QNetworkReply* reply, const SumoCaseId& caseId, const QString& ensembleName );
|
||||||
|
void parseRealizationNumbers( QNetworkReply* reply, const SumoCaseId& caseId, const QString& ensembleName );
|
||||||
|
void parseBlobIds( QNetworkReply* reply, const SumoCaseId& caseId, const QString& ensembleName, const QString& vectorName );
|
||||||
|
|
||||||
|
void saveFile( QNetworkReply* reply, const QString& fileId );
|
||||||
|
|
||||||
|
void accessGranted();
|
||||||
|
void requestFailed( const QAbstractOAuth::Error error );
|
||||||
|
void parquetDownloadComplete( const QString& blobId, const QByteArray&, const QString& url );
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void fileDownloadFinished( const QString& fileId, const QString& filePath );
|
||||||
|
void casesFinished();
|
||||||
|
void wellsFinished();
|
||||||
|
void wellboresFinished( const QString& wellId );
|
||||||
|
void wellboreTrajectoryFinished( const QString& wellboreId );
|
||||||
|
void tokenReady( const QString& token );
|
||||||
|
void parquetDownloadFinished( const QByteArray& contents, const QString& url );
|
||||||
|
void ensembleNamesFinished();
|
||||||
|
void vectorNamesFinished();
|
||||||
|
void blobIdFinished();
|
||||||
|
void assetsFinished();
|
||||||
|
void realizationIdsFinished();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void addStandardHeader( QNetworkRequest& networkRequest, const QString& token, const QString& contentType );
|
||||||
|
|
||||||
|
QString requestTokenBlocking();
|
||||||
|
|
||||||
|
QNetworkReply* makeRequest( const std::map<QString, QString>& parameters, const QString& server, const QString& token );
|
||||||
|
QNetworkReply* makeDownloadRequest( const QString& url, const QString& token, const QString& contentType );
|
||||||
|
void requestParquetData( const QString& url, const QString& token );
|
||||||
|
|
||||||
|
static QString generateRandomString( int length = 20 );
|
||||||
|
static QString constructSearchUrl( const QString& server );
|
||||||
|
static QString constructDownloadUrl( const QString& server, const QString& blobId );
|
||||||
|
static QString constructAuthUrl( const QString& authority );
|
||||||
|
static QString constructTokenUrl( const QString& authority );
|
||||||
|
|
||||||
|
private:
|
||||||
|
QOAuth2AuthorizationCodeFlow* m_authCodeFlow;
|
||||||
|
QNetworkAccessManager* m_networkAccessManager;
|
||||||
|
|
||||||
|
const QString m_server;
|
||||||
|
const QString m_authority;
|
||||||
|
const QString m_scopes;
|
||||||
|
const QString m_clientId;
|
||||||
|
|
||||||
|
QString m_token;
|
||||||
|
|
||||||
|
std::vector<SumoAsset> m_assets;
|
||||||
|
std::vector<SumoCase> m_cases;
|
||||||
|
std::vector<QString> m_vectorNames;
|
||||||
|
std::vector<QString> m_realizationIds;
|
||||||
|
std::vector<SumoEnsemble> m_ensembleNames;
|
||||||
|
|
||||||
|
std::vector<QString> m_blobUrl;
|
||||||
|
|
||||||
|
QString m_redirect;
|
||||||
|
|
||||||
|
std::vector<SumoRedirect> m_redirectInfo;
|
||||||
|
|
||||||
|
QByteArray m_parquetData;
|
||||||
|
|
||||||
|
QString m_tokenDataFilePath;
|
||||||
|
};
|
@ -0,0 +1,38 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2024- Equinor ASA
|
||||||
|
//
|
||||||
|
// ResInsight is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
//
|
||||||
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "RiaSumoDefines.h"
|
||||||
|
|
||||||
|
#include <QDir>
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString RiaSumoDefines::tokenPath()
|
||||||
|
{
|
||||||
|
QString homePath = QDir::homePath();
|
||||||
|
return homePath + "/.resinsight/sumo_token.json";
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
int RiaSumoDefines::requestTimeoutMillis()
|
||||||
|
{
|
||||||
|
return 500;
|
||||||
|
}
|
32
ApplicationLibCode/Application/Tools/Cloud/RiaSumoDefines.h
Normal file
32
ApplicationLibCode/Application/Tools/Cloud/RiaSumoDefines.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2024- Equinor ASA
|
||||||
|
//
|
||||||
|
// ResInsight is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
//
|
||||||
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "nonstd/type.hpp"
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
using SumoAssetId = nonstd::ordered<QString, struct sumo_asset_tag>;
|
||||||
|
using SumoCaseId = nonstd::ordered<QString, struct sumo_case_tag>;
|
||||||
|
|
||||||
|
namespace RiaSumoDefines
|
||||||
|
{
|
||||||
|
QString tokenPath();
|
||||||
|
int requestTimeoutMillis();
|
||||||
|
}; // namespace RiaSumoDefines
|
@ -393,3 +393,23 @@ void RiaSummaryTools::reloadSummaryCase( RimSummaryCase* summaryCase )
|
|||||||
multiPlot->updatePlotTitles();
|
multiPlot->updatePlotTitles();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiaSummaryTools::reloadSummaryEnsemble( RimSummaryCaseCollection* ensemble )
|
||||||
|
{
|
||||||
|
RimSummaryMultiPlotCollection* summaryPlotColl = RiaSummaryTools::summaryMultiPlotCollection();
|
||||||
|
for ( RimSummaryMultiPlot* multiPlot : summaryPlotColl->multiPlots() )
|
||||||
|
{
|
||||||
|
for ( RimSummaryPlot* summaryPlot : multiPlot->summaryPlots() )
|
||||||
|
{
|
||||||
|
summaryPlot->loadDataAndUpdate();
|
||||||
|
|
||||||
|
// Consider to make the zoom optional
|
||||||
|
summaryPlot->zoomAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
multiPlot->updatePlotTitles();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -86,6 +86,7 @@ public:
|
|||||||
static void copyCurveAxisData( RimSummaryCurve& curve, const RimSummaryCurve& otherCurve );
|
static void copyCurveAxisData( RimSummaryCurve& curve, const RimSummaryCurve& otherCurve );
|
||||||
|
|
||||||
static void reloadSummaryCase( RimSummaryCase* summaryCase );
|
static void reloadSummaryCase( RimSummaryCase* summaryCase );
|
||||||
|
static void reloadSummaryEnsemble( RimSummaryCaseCollection* ensemble );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void updateRequiredCalculatedCurves( RimSummaryCase* sourceSummaryCase );
|
static void updateRequiredCalculatedCurves( RimSummaryCase* sourceSummaryCase );
|
||||||
|
@ -93,6 +93,7 @@ list(
|
|||||||
Application/CMakeLists_files.cmake
|
Application/CMakeLists_files.cmake
|
||||||
Application/Tools/CMakeLists_files.cmake
|
Application/Tools/CMakeLists_files.cmake
|
||||||
Application/Tools/WellPathTools/CMakeLists_files.cmake
|
Application/Tools/WellPathTools/CMakeLists_files.cmake
|
||||||
|
Application/Tools/Cloud/CMakeLists_files.cmake
|
||||||
ReservoirDataModel/CMakeLists_files.cmake
|
ReservoirDataModel/CMakeLists_files.cmake
|
||||||
ReservoirDataModel/CMakeLists_filesNotToUnitTest.cmake
|
ReservoirDataModel/CMakeLists_filesNotToUnitTest.cmake
|
||||||
ReservoirDataModel/Completions/CMakeLists_files.cmake
|
ReservoirDataModel/Completions/CMakeLists_files.cmake
|
||||||
@ -415,6 +416,7 @@ set(UNITY_EXCLUDE_FILES
|
|||||||
FileInterface/RifOsduWellPathReader.cpp
|
FileInterface/RifOsduWellPathReader.cpp
|
||||||
FileInterface/RifOsduWellLogReader.cpp
|
FileInterface/RifOsduWellLogReader.cpp
|
||||||
FileInterface/RifByteArrayArrowRandomAccessFile.cpp
|
FileInterface/RifByteArrayArrowRandomAccessFile.cpp
|
||||||
|
FileInterface/RifArrowTools.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
if(RESINSIGHT_ENABLE_UNITY_BUILD)
|
if(RESINSIGHT_ENABLE_UNITY_BUILD)
|
||||||
|
@ -20,6 +20,7 @@ set(SOURCE_GROUP_HEADER_FILES
|
|||||||
${CMAKE_CURRENT_LIST_DIR}/RicShowPlotDataCtxFeature.h
|
${CMAKE_CURRENT_LIST_DIR}/RicShowPlotDataCtxFeature.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RicOpenInTextEditorFeature.h
|
${CMAKE_CURRENT_LIST_DIR}/RicOpenInTextEditorFeature.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RicShowMemoryReportFeature.h
|
${CMAKE_CURRENT_LIST_DIR}/RicShowMemoryReportFeature.h
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RicSumoDataFeature.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set(SOURCE_GROUP_SOURCE_FILES
|
set(SOURCE_GROUP_SOURCE_FILES
|
||||||
@ -44,13 +45,16 @@ set(SOURCE_GROUP_SOURCE_FILES
|
|||||||
${CMAKE_CURRENT_LIST_DIR}/RicShowPlotDataCtxFeature.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RicShowPlotDataCtxFeature.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RicOpenInTextEditorFeature.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RicOpenInTextEditorFeature.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RicShowMemoryReportFeature.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RicShowMemoryReportFeature.cpp
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RicSumoDataFeature.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND COMMAND_CODE_HEADER_FILES ${SOURCE_GROUP_HEADER_FILES})
|
list(APPEND COMMAND_CODE_HEADER_FILES ${SOURCE_GROUP_HEADER_FILES})
|
||||||
|
|
||||||
list(APPEND COMMAND_CODE_SOURCE_FILES ${SOURCE_GROUP_SOURCE_FILES})
|
list(APPEND COMMAND_CODE_SOURCE_FILES ${SOURCE_GROUP_SOURCE_FILES})
|
||||||
|
|
||||||
set(COMMAND_QT_MOC_HEADERS ${COMMAND_QT_MOC_HEADERS})
|
list(APPEND COMMAND_QT_MOC_HEADERS
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RicSumoDataFeature.h
|
||||||
|
)
|
||||||
|
|
||||||
source_group(
|
source_group(
|
||||||
"CommandFeature\\Application"
|
"CommandFeature\\Application"
|
||||||
|
@ -64,7 +64,6 @@ void RicEditPreferencesFeature::onActionTriggered( bool isChecked )
|
|||||||
std::unique_ptr<RiaPreferences> oldPreferences = clonePreferences( app->preferences() );
|
std::unique_ptr<RiaPreferences> oldPreferences = clonePreferences( app->preferences() );
|
||||||
|
|
||||||
RiuPropertyViewTabWidget propertyDialog( nullptr, app->preferences(), "Preferences", tabNames );
|
RiuPropertyViewTabWidget propertyDialog( nullptr, app->preferences(), "Preferences", tabNames );
|
||||||
propertyDialog.setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
|
|
||||||
|
|
||||||
auto pushButton = propertyDialog.dialogButtonBox()->addButton( "Help", QDialogButtonBox::HelpRole );
|
auto pushButton = propertyDialog.dialogButtonBox()->addButton( "Help", QDialogButtonBox::HelpRole );
|
||||||
connect( pushButton, &QPushButton::clicked, this, &RicEditPreferencesFeature::showHelp );
|
connect( pushButton, &QPushButton::clicked, this, &RicEditPreferencesFeature::showHelp );
|
||||||
|
@ -0,0 +1,288 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2024 Equinor ASA
|
||||||
|
//
|
||||||
|
// ResInsight is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
//
|
||||||
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "RicSumoDataFeature.h"
|
||||||
|
|
||||||
|
#include "RiaApplication.h"
|
||||||
|
#include "RiaGuiApplication.h"
|
||||||
|
#include "RiaLogging.h"
|
||||||
|
#include "RiaPreferences.h"
|
||||||
|
#include "RiaPreferencesSystem.h"
|
||||||
|
|
||||||
|
#include "RifArrowTools.h"
|
||||||
|
|
||||||
|
#include "RiuMainWindow.h"
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
|
CAF_CMD_SOURCE_INIT( RicSumoDataFeature, "RicSumoDataFeature" );
|
||||||
|
|
||||||
|
SimpleDialog::SimpleDialog( QWidget* parent )
|
||||||
|
: QDialog( parent )
|
||||||
|
{
|
||||||
|
setWindowTitle( "Simple Dialog" );
|
||||||
|
|
||||||
|
QVBoxLayout* layout = new QVBoxLayout( this );
|
||||||
|
|
||||||
|
label = new QLabel( "This is a simple dialog.", this );
|
||||||
|
layout->addWidget( label );
|
||||||
|
|
||||||
|
authButton = new QPushButton( "Authenticate", this );
|
||||||
|
connect( authButton, &QPushButton::clicked, this, &SimpleDialog::onAuthClicked );
|
||||||
|
layout->addWidget( authButton );
|
||||||
|
|
||||||
|
assetsButton = new QPushButton( "Asset Names", this );
|
||||||
|
connect( assetsButton, &QPushButton::clicked, this, &SimpleDialog::onAssetsClicked );
|
||||||
|
layout->addWidget( assetsButton );
|
||||||
|
|
||||||
|
casesButton = new QPushButton( "Cases", this );
|
||||||
|
connect( casesButton, &QPushButton::clicked, this, &SimpleDialog::onCasesClicked );
|
||||||
|
layout->addWidget( casesButton );
|
||||||
|
|
||||||
|
vectorNamesButton = new QPushButton( "Vector Names", this );
|
||||||
|
connect( vectorNamesButton, &QPushButton::clicked, this, &SimpleDialog::onVectorNamesClicked );
|
||||||
|
layout->addWidget( vectorNamesButton );
|
||||||
|
|
||||||
|
blobIdButton = new QPushButton( "Blob Id", this );
|
||||||
|
connect( blobIdButton, &QPushButton::clicked, this, &SimpleDialog::onFindBlobIdClicked );
|
||||||
|
layout->addWidget( blobIdButton );
|
||||||
|
|
||||||
|
parquetDownloadButton = new QPushButton( "Parquet", this );
|
||||||
|
connect( parquetDownloadButton, &QPushButton::clicked, this, &SimpleDialog::onParquetClicked );
|
||||||
|
layout->addWidget( parquetDownloadButton );
|
||||||
|
|
||||||
|
showContentParquetButton = new QPushButton( "Show Content Parquet", this );
|
||||||
|
connect( showContentParquetButton, &QPushButton::clicked, this, &SimpleDialog::onShowContentParquetClicked );
|
||||||
|
layout->addWidget( showContentParquetButton );
|
||||||
|
|
||||||
|
realizationIdsButton = new QPushButton( "Realizations", this );
|
||||||
|
connect( realizationIdsButton, &QPushButton::clicked, this, &SimpleDialog::onRealizationsClicked );
|
||||||
|
layout->addWidget( realizationIdsButton );
|
||||||
|
|
||||||
|
okButton = new QPushButton( "OK", this );
|
||||||
|
connect( okButton, &QPushButton::clicked, this, &SimpleDialog::onOkClicked );
|
||||||
|
layout->addWidget( okButton );
|
||||||
|
|
||||||
|
cancelButton = new QPushButton( "Cancel", this );
|
||||||
|
connect( cancelButton, &QPushButton::clicked, this, &SimpleDialog::onCancelClicked );
|
||||||
|
layout->addWidget( cancelButton );
|
||||||
|
|
||||||
|
setLayout( layout );
|
||||||
|
|
||||||
|
m_sumoConnector = RiaApplication::instance()->makeSumoConnector();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
SimpleDialog::~SimpleDialog()
|
||||||
|
{
|
||||||
|
if ( m_sumoConnector )
|
||||||
|
{
|
||||||
|
m_sumoConnector->deleteLater();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void SimpleDialog::createConnection()
|
||||||
|
{
|
||||||
|
m_sumoConnector = RiaApplication::instance()->makeSumoConnector();
|
||||||
|
connect( m_sumoConnector, &RiaSumoConnector::tokenReady, this, &SimpleDialog::onTokenReady );
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void SimpleDialog::onAuthClicked()
|
||||||
|
{
|
||||||
|
createConnection();
|
||||||
|
m_sumoConnector->requestToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void SimpleDialog::onAssetsClicked()
|
||||||
|
{
|
||||||
|
if ( !isTokenValid() ) return;
|
||||||
|
|
||||||
|
m_sumoConnector->requestAssets();
|
||||||
|
m_sumoConnector->assets();
|
||||||
|
|
||||||
|
label->setText( "Requesting fields (see log for response" );
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void SimpleDialog::onCasesClicked()
|
||||||
|
{
|
||||||
|
if ( !isTokenValid() ) return;
|
||||||
|
|
||||||
|
QString fieldName = "Drogon";
|
||||||
|
m_sumoConnector->requestCasesForField( fieldName );
|
||||||
|
|
||||||
|
label->setText( "Requesting cases (see log for response" );
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void SimpleDialog::onVectorNamesClicked()
|
||||||
|
{
|
||||||
|
if ( !isTokenValid() ) return;
|
||||||
|
|
||||||
|
SumoCaseId caseId( "5b783aab-ce10-4b78-b129-baf8d8ce4baa" );
|
||||||
|
QString iteration = "iter-0";
|
||||||
|
|
||||||
|
m_sumoConnector->requestVectorNamesForEnsemble( caseId, iteration );
|
||||||
|
|
||||||
|
label->setText( "Requesting vector names (see log for response" );
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void SimpleDialog::onFindBlobIdClicked()
|
||||||
|
{
|
||||||
|
if ( !isTokenValid() ) return;
|
||||||
|
|
||||||
|
SumoCaseId caseId( "5b783aab-ce10-4b78-b129-baf8d8ce4baa" );
|
||||||
|
QString iteration = "iter-0";
|
||||||
|
QString vectorName = "FOPT";
|
||||||
|
|
||||||
|
m_sumoConnector->requestBlobIdForEnsemble( caseId, iteration, vectorName );
|
||||||
|
|
||||||
|
label->setText( "Requesting blob ID for vector name (see log for response" );
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void SimpleDialog::onParquetClicked()
|
||||||
|
{
|
||||||
|
if ( !isTokenValid() ) return;
|
||||||
|
|
||||||
|
if ( m_sumoConnector->blobUrls().empty() )
|
||||||
|
{
|
||||||
|
onFindBlobIdClicked();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !m_sumoConnector->blobUrls().empty() )
|
||||||
|
{
|
||||||
|
m_sumoConnector->requestBlobDownload( m_sumoConnector->blobUrls().back() );
|
||||||
|
|
||||||
|
label->setText( "Requesting blob ID for vector name (see log for response" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void SimpleDialog::onShowContentParquetClicked()
|
||||||
|
{
|
||||||
|
if ( m_sumoConnector->blobContents().empty() ) return;
|
||||||
|
|
||||||
|
auto blob = m_sumoConnector->blobContents().back();
|
||||||
|
|
||||||
|
auto content = blob.contents;
|
||||||
|
|
||||||
|
// TODO: show content using parquet reader
|
||||||
|
auto tableText = RifArrowTools::readFirstRowsOfTable( content );
|
||||||
|
RiaLogging::info( tableText );
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void SimpleDialog::onRealizationsClicked()
|
||||||
|
{
|
||||||
|
if ( !isTokenValid() ) return;
|
||||||
|
|
||||||
|
SumoCaseId caseId( "485041ce-ad72-48a3-ac8c-484c0ed95cf8" );
|
||||||
|
QString iteration = "iter-0";
|
||||||
|
|
||||||
|
m_sumoConnector->requestRealizationIdsForEnsembleBlocking( caseId, iteration );
|
||||||
|
|
||||||
|
auto ids = m_sumoConnector->realizationIds();
|
||||||
|
for ( const auto& id : ids )
|
||||||
|
{
|
||||||
|
RiaLogging::info( id );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
bool SimpleDialog::isTokenValid()
|
||||||
|
{
|
||||||
|
if ( !m_sumoConnector )
|
||||||
|
{
|
||||||
|
createConnection();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( m_sumoConnector->token().isEmpty() )
|
||||||
|
{
|
||||||
|
m_sumoConnector->requestToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
return !m_sumoConnector->token().isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void SimpleDialog::onTokenReady( const QString& token )
|
||||||
|
{
|
||||||
|
RiaLogging::info( "Token ready: " + token );
|
||||||
|
}
|
||||||
|
|
||||||
|
void SimpleDialog::onOkClicked()
|
||||||
|
{
|
||||||
|
qDebug( "OK button clicked" );
|
||||||
|
accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SimpleDialog::onCancelClicked()
|
||||||
|
{
|
||||||
|
qDebug( "Cancel button clicked" );
|
||||||
|
reject();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RicSumoDataFeature::onActionTriggered( bool isChecked )
|
||||||
|
{
|
||||||
|
if ( !m_dialog )
|
||||||
|
{
|
||||||
|
m_dialog = new SimpleDialog( RiaGuiApplication::instance()->mainWindow() );
|
||||||
|
}
|
||||||
|
m_dialog->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RicSumoDataFeature::setupActionLook( QAction* actionToSetup )
|
||||||
|
{
|
||||||
|
actionToSetup->setText( "SUMO" );
|
||||||
|
}
|
@ -0,0 +1,85 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2024 Equinor ASA
|
||||||
|
//
|
||||||
|
// ResInsight is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
//
|
||||||
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "cafCmdFeature.h"
|
||||||
|
|
||||||
|
#include "Cloud/RiaSumoConnector.h"
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QPointer>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
class SimpleDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
SimpleDialog( QWidget* parent = nullptr );
|
||||||
|
~SimpleDialog();
|
||||||
|
|
||||||
|
void createConnection();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void onOkClicked();
|
||||||
|
void onCancelClicked();
|
||||||
|
void onTokenReady( const QString& token );
|
||||||
|
void onAuthClicked();
|
||||||
|
void onAssetsClicked();
|
||||||
|
void onCasesClicked();
|
||||||
|
void onVectorNamesClicked();
|
||||||
|
void onFindBlobIdClicked();
|
||||||
|
void onParquetClicked();
|
||||||
|
void onShowContentParquetClicked();
|
||||||
|
void onRealizationsClicked();
|
||||||
|
|
||||||
|
bool isTokenValid();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QLabel* label;
|
||||||
|
QPushButton* okButton;
|
||||||
|
QPushButton* cancelButton;
|
||||||
|
QPushButton* authButton;
|
||||||
|
QPushButton* assetsButton;
|
||||||
|
QPushButton* casesButton;
|
||||||
|
QPushButton* vectorNamesButton;
|
||||||
|
QPushButton* blobIdButton;
|
||||||
|
QPushButton* parquetDownloadButton;
|
||||||
|
QPushButton* showContentParquetButton;
|
||||||
|
QPushButton* realizationIdsButton;
|
||||||
|
|
||||||
|
QPointer<RiaSumoConnector> m_sumoConnector;
|
||||||
|
};
|
||||||
|
|
||||||
|
//==================================================================================================
|
||||||
|
///
|
||||||
|
//==================================================================================================
|
||||||
|
class RicSumoDataFeature : public caf::CmdFeature
|
||||||
|
{
|
||||||
|
CAF_CMD_HEADER_INIT;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void onActionTriggered( bool isChecked ) override;
|
||||||
|
void setupActionLook( QAction* actionToSetup ) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
SimpleDialog* m_dialog = nullptr;
|
||||||
|
};
|
@ -684,6 +684,7 @@ void RiuMainWindow::createToolBars()
|
|||||||
{
|
{
|
||||||
QToolBar* toolbar = addToolBar( tr( "Test" ) );
|
QToolBar* toolbar = addToolBar( tr( "Test" ) );
|
||||||
toolbar->setObjectName( toolbar->windowTitle() );
|
toolbar->setObjectName( toolbar->windowTitle() );
|
||||||
|
toolbar->addAction( cmdFeatureMgr->action( "RicSumoDataFeature" ) );
|
||||||
toolbar->addAction( cmdFeatureMgr->action( "RicLaunchRegressionTestsFeature" ) );
|
toolbar->addAction( cmdFeatureMgr->action( "RicLaunchRegressionTestsFeature" ) );
|
||||||
toolbar->addAction( cmdFeatureMgr->action( "RicLaunchRegressionTestDialogFeature" ) );
|
toolbar->addAction( cmdFeatureMgr->action( "RicLaunchRegressionTestDialogFeature" ) );
|
||||||
toolbar->addAction( cmdFeatureMgr->action( "RicShowClassNamesFeature" ) );
|
toolbar->addAction( cmdFeatureMgr->action( "RicShowClassNamesFeature" ) );
|
||||||
|
@ -114,7 +114,7 @@ QSize RiuPropertyViewTabWidget::sizeHint() const
|
|||||||
// qDebug() << "tab size hint" << w->sizeHint();
|
// qDebug() << "tab size hint" << w->sizeHint();
|
||||||
|
|
||||||
QSize pageSize = w->sizeHint();
|
QSize pageSize = w->sizeHint();
|
||||||
pageSize += QSize( 0, 100 );
|
pageSize += QSize( 60, 100 );
|
||||||
|
|
||||||
maxSizeHint = maxSizeHint.expandedTo( pageSize );
|
maxSizeHint = maxSizeHint.expandedTo( pageSize );
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user