From 302456b21b91dedab584a229385f1ef98774a71c Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Fri, 22 May 2020 18:23:25 +0200 Subject: [PATCH] Vari update x testing client/server --- Libs/System.Windows.Interactivity.dll | Bin 0 -> 55904 bytes Thermo.Active/App.config | 226 ++++++++++++++-------- Thermo.Active/App_Start/Startup.cs | 10 +- Thermo.Active/Thermo.Active.csproj | 8 + Thermo.Active/wwwroot/index.html | 2 +- Thermo.Active/wwwroot/src/main.ts | 7 +- Thermo.Active/wwwroot/src/services/hub.ts | 58 +++--- 7 files changed, 200 insertions(+), 111 deletions(-) create mode 100644 Libs/System.Windows.Interactivity.dll diff --git a/Libs/System.Windows.Interactivity.dll b/Libs/System.Windows.Interactivity.dll new file mode 100644 index 0000000000000000000000000000000000000000..931c744c87a5bafbfa9471ee90b082c752b12dfc GIT binary patch literal 55904 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 icF~$l7!ZGY?^C - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Thermo.Active/App_Start/Startup.cs b/Thermo.Active/App_Start/Startup.cs index 12991bdc..29d585b8 100644 --- a/Thermo.Active/App_Start/Startup.cs +++ b/Thermo.Active/App_Start/Startup.cs @@ -107,11 +107,11 @@ namespace Thermo.Active.App_Start { map.UseCors(CorsOptions.AllowAll); - map.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions() - { - Provider = new SignalROAuthBearerProvider(), - AuthenticationType = AUTHENTICATION_TYPE - }); + //map.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions() + //{ + // Provider = new SignalROAuthBearerProvider(), + // AuthenticationType = AUTHENTICATION_TYPE + //}); var hubConfiguration = new HubConfiguration { Resolver = GlobalHost.DependencyResolver, diff --git a/Thermo.Active/Thermo.Active.csproj b/Thermo.Active/Thermo.Active.csproj index f2f75143..3677d1d4 100644 --- a/Thermo.Active/Thermo.Active.csproj +++ b/Thermo.Active/Thermo.Active.csproj @@ -119,6 +119,8 @@ ..\packages\Owin.1.0\lib\net40\Owin.dll + + ..\packages\Swashbuckle.Core.5.6.0\lib\net40\Swashbuckle.Core.dll @@ -163,6 +165,10 @@ ..\packages\Microsoft.AspNet.WebPages.2.0.20505.0\lib\net40\System.Web.WebPages.Razor.dll + + ..\Libs\System.Windows.Interactivity.dll + + @@ -204,6 +210,7 @@ ..\packages\Microsoft.AspNet.WebPages.WebData.2.0.20505.0\lib\net40\WebMatrix.WebData.dll + @@ -16427,6 +16434,7 @@ + diff --git a/Thermo.Active/wwwroot/index.html b/Thermo.Active/wwwroot/index.html index f1b8ee9e..fdd93267 100644 --- a/Thermo.Active/wwwroot/index.html +++ b/Thermo.Active/wwwroot/index.html @@ -13,7 +13,7 @@ - + diff --git a/Thermo.Active/wwwroot/src/main.ts b/Thermo.Active/wwwroot/src/main.ts index d5592f39..95e26e10 100644 --- a/Thermo.Active/wwwroot/src/main.ts +++ b/Thermo.Active/wwwroot/src/main.ts @@ -88,7 +88,12 @@ router.beforeEach((to, from, next) => { // Initialize default language import { LocalizationService } from "src/services/localizationService"; -new LocalizationService().init(); +try +{ + new LocalizationService().init(); +} +catch +{ } let v = new Vue({ diff --git a/Thermo.Active/wwwroot/src/services/hub.ts b/Thermo.Active/wwwroot/src/services/hub.ts index d8cfa95d..391dd772 100644 --- a/Thermo.Active/wwwroot/src/services/hub.ts +++ b/Thermo.Active/wwwroot/src/services/hub.ts @@ -70,27 +70,29 @@ export class Hub { try { $.connection.ncHub.logging = true; } catch{ } // Registro le callback; - this._hub.client.alarms = this.manageAlarmsCallbacks; + // this._hub.client.alarms = this.manageAlarmsCallbacks; this._hub.client.powerOn = this.managePowerCallbacks; - this._hub.client.ncNetworkStatus = Hub.manageNcStatus; - this._hub.client.processesData = Hub.manageProcesses; - this._hub.client.functionalityData = Hub.functionalityData; - this._hub.client.expiredMaintenances = Hub.expiredMaintenances; + // this._hub.client.ncNetworkStatus = Hub.manageNcStatus; + // this._hub.client.processesData = Hub.manageProcesses; + // this._hub.client.functionalityData = Hub.functionalityData; + // this._hub.client.expiredMaintenances = Hub.expiredMaintenances; - this._hub.client.ncSoftKeys = Hub.ncSoftKeyChanged; - this._hub.client.userSoftKeys = Hub.userSoftKeyChanged; - this._hub.client.headsData = Hub.headsDataChanged; - this._hub.client.processesData = Hub.processDataChanged; - this._hub.client.axesNames = Hub.axesNamesDataChanged; - this._hub.client.axesPositions = Hub.axesPositionsDataChanged; - this._hub.client.magazinesStatus = Hub.magazineStatusChanged; - this._hub.client.activeProgramData = Hub.activeProgramData; - this._hub.client.magazineIsActive = Hub.magazineIsActive; - this._hub.client.m155Data = Hub.m155Data; - this._hub.client.partProgramQueue = Hub.partProgramQueue; + // this._hub.client.ncSoftKeys = Hub.ncSoftKeyChanged; + // this._hub.client.userSoftKeys = Hub.userSoftKeyChanged; + // this._hub.client.headsData = Hub.headsDataChanged; + // this._hub.client.processesData = Hub.processDataChanged; + // this._hub.client.axesNames = Hub.axesNamesDataChanged; + // this._hub.client.axesPositions = Hub.axesPositionsDataChanged; + // this._hub.client.magazinesStatus = Hub.magazineStatusChanged; + // this._hub.client.activeProgramData = Hub.activeProgramData; + // this._hub.client.magazineIsActive = Hub.magazineIsActive; + // this._hub.client.m155Data = Hub.m155Data; + // this._hub.client.partProgramQueue = Hub.partProgramQueue; - this._hub.client.scadaData = Hub.scadaDataChanged; - this._hub.client.cmsConnectGatewayRebbot = Hub.cmsConnectGatewayRebbot; + // this._hub.client.scadaData = Hub.scadaDataChanged; + // this._hub.client.cmsConnectGatewayRebbot = Hub.cmsConnectGatewayRebbot; + + // sottoscrivere qui i metodi NUOVI dal server (Recipe, gauges) this._hub.client.logout = this.logout; @@ -108,15 +110,15 @@ export class Hub { $.connection.hub.start({ transport: ['serverSentEvents'] }); }, 5000); // Restart connection after 5 seconds. }); - $.connection.hub.stateChanged(async (state) => { - if (state.newState == $.signalR.connectionState.connected) { - try { - await scadaService.ListScada(); - } - catch (err) { } - Hub.manageServerStatus("connected"); - } - }) + // $.connection.hub.stateChanged(async (state) => { + // if (state.newState == $.signalR.connectionState.connected) { + // try { + // await scadaService.ListScada(); + // } + // catch (err) { } + // Hub.manageServerStatus("connected"); + // } + // }) $.connection.hub.start({ transport: ['serverSentEvents'] }); @@ -428,6 +430,8 @@ export class Hub { }); } + // mettere qui metodo x pubblicare su server + public RefreshAlarm(id: string) { this._hub.server.refreshAlarm(id) .catch((err) => {