spitfirepm 1.10.87 → 1.20.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /// <reference types="jquery" />
2
2
  import { GUID } from "./globals";
3
- import { IUCPermit, QueryFilters, Suggestion, UCPermitSet, UIDisplayConfig, UIDisplayPart } from "./SwaggerClients";
3
+ import { IUCPermit, QueryFilters, SessionClient, Suggestion, UCPermitSet, UIDisplayConfig, UIDisplayPart } from "./SwaggerClients";
4
4
  import * as _SwaggerClientExports from "./SwaggerClients";
5
5
  export declare enum LoggingLevels {
6
6
  None = 0,
@@ -228,6 +228,10 @@ export declare class sfRestClient {
228
228
  * when true, a unique value is added to defeat cache
229
229
  */
230
230
  autoVary?: boolean | undefined): Promise<string | null>;
231
+ private _ThrottleDVRequests;
232
+ private _DVRequestQueue;
233
+ private _DVThrottledResolvers;
234
+ private _DVRequestTimerHandle;
231
235
  /**
232
236
  * Async Get Part Configuration Data given part name, doc type and context
233
237
  */
@@ -251,6 +255,12 @@ export declare class sfRestClient {
251
255
  *
252
256
  */
253
257
  PopQAInfo(forElement: JQuery<HTMLElement>, queryOptions?: QAInfoOptions, resolveKey?: (forElement: JQuery<HTMLElement>) => string, resolveValue?: (forElement: JQuery<HTMLElement>, queryOptions: QAInfoOptions) => string, onPostback?: (eventTarget: string, eventArgs: string) => void): JQuery<HTMLElement>;
258
+ /** checks with server up to 5 times a second. promise resolves when task has ended or callback returns true;
259
+ * @param taskKey guid key for task
260
+ * @param sessionClient optional existing SessionClient
261
+ * @param progressCallback optional callback for when task status is not 200; if this callback returns true, promise is resolved
262
+ */
263
+ WaitForTask(taskKey: GUID, sessionClient?: SessionClient, progressCallback?: (state: _SwaggerClientExports.HttpResponseJsonContent) => boolean): Promise<_SwaggerClientExports.HttpResponseJsonContent>;
254
264
  /**
255
265
  * Maps .NET placeholders (dn) to webix placeholders (dx)
256
266
  * Important: order matters (eg: dd must be remapped before d, or the d map would be used)
@@ -7,7 +7,7 @@ const _SwaggerClientExports = require("./SwaggerClients");
7
7
  const $ = require("jquery");
8
8
  const BrowserExtensionChecker_1 = require("./BrowserExtensionChecker");
9
9
  //import {dialog} from "jquery-ui";
10
- const ClientPackageVersion = "1.10.87";
10
+ const ClientPackageVersion = "1.20.91";
11
11
  //export type GUID = string //& { isGuid: true };
12
12
  /* eslint-disable prefer-template */
13
13
  /* eslint-disable no-extend-native */
@@ -246,6 +246,10 @@ class sfRestClient {
246
246
  Login: 16384,
247
247
  DiagUtilities: 32768
248
248
  };
249
+ this._DVRequestQueue = [];
250
+ //private _DVThrottledResolvers1 : {[key:string]:(params:string)=>void; }
251
+ this._DVThrottledResolvers = new Map();
252
+ this._DVRequestTimerHandle = undefined;
249
253
  /**
250
254
  * Maps .NET placeholders (dn) to webix placeholders (dx)
251
255
  * Important: order matters (eg: dd must be remapped before d, or the d map would be used)
@@ -907,7 +911,6 @@ class sfRestClient {
907
911
  * when true, a unique value is added to defeat cache
908
912
  */
909
913
  autoVary) {
910
- // future: finish support for dependsOn list
911
914
  var apiResultPromise;
912
915
  if (!keyValue)
913
916
  return new Promise((resolve) => resolve(""));
@@ -955,10 +958,13 @@ class sfRestClient {
955
958
  if (DependsOnSet[index] == "undefined")
956
959
  DependsOnSet.pop();
957
960
  }
958
- var DVFilters = new SwaggerClients_1.QueryFilters();
959
- DVFilters.MatchingSeed = keyValue;
961
+ var DVFilters = new _SwaggerClientExports.DVRequest();
962
+ DVFilters.DVName = displayName;
963
+ DVFilters.MatchingValue = keyValue;
960
964
  DVFilters.DependsOn = DependsOnSet;
961
- var apiResultPromise = api.getDisplayValueViaPost(displayName, "1", DVFilters);
965
+ DVFilters.RequestID = cacheKey;
966
+ //DVFilters.DataContext = "1";
967
+ var apiResultPromise = this._ThrottleDVRequests(api, DVFilters);
962
968
  if (apiResultPromise) {
963
969
  apiResultPromise.then((dvResult) => {
964
970
  if (dvResult) {
@@ -971,6 +977,51 @@ class sfRestClient {
971
977
  this._CachedDVRequests.set(cacheKey, apiResultPromise);
972
978
  return apiResultPromise;
973
979
  }
980
+ _ThrottleDVRequests(api, dvRequest) {
981
+ var DVResultPromise;
982
+ var RESTClient = this;
983
+ if (sfRestClient._Options.LogLevel >= LoggingLevels.VerboseDebug)
984
+ console.log(`ThrottleDV(${dvRequest.DVName}:${dvRequest.MatchingValue}) with ${this._CachedDVRequests.size} pending `);
985
+ if (this._CachedDVRequests.size > 0) {
986
+ DVResultPromise = new Promise((resolvedTo) => {
987
+ if (!RESTClient._DVRequestTimerHandle) {
988
+ if (sfRestClient._Options.LogLevel >= LoggingLevels.VerboseDebug)
989
+ console.log(`ThrottleDV() created BatchDV `);
990
+ RESTClient._DVRequestTimerHandle = setTimeout(() => {
991
+ var thisGroup = [];
992
+ Object.assign(thisGroup, RESTClient._DVRequestQueue);
993
+ RESTClient._DVRequestQueue = [];
994
+ RESTClient._DVRequestTimerHandle = undefined;
995
+ if (sfRestClient._Options.LogLevel >= LoggingLevels.VerboseDebug)
996
+ console.log(`BatchDV() with ${thisGroup.length} in group `);
997
+ api.getDisplayValueCollection(thisGroup).then(dvList => {
998
+ if (sfRestClient._Options.LogLevel >= LoggingLevels.VerboseDebug)
999
+ console.log(`BatchDV().THEN `, dvList);
1000
+ if (dvList)
1001
+ dvList.forEach(element => {
1002
+ if (element.value) {
1003
+ var DVDonePromise = this._DVThrottledResolvers.get(element.value);
1004
+ if (DVDonePromise) {
1005
+ DVDonePromise(element.label);
1006
+ this._DVThrottledResolvers.delete(element.value);
1007
+ }
1008
+ else
1009
+ console.warn("Batch DV could not find element", element);
1010
+ }
1011
+ else
1012
+ console.warn("Batch DV could not find cacheId", element);
1013
+ });
1014
+ });
1015
+ }, 321);
1016
+ }
1017
+ RESTClient._DVRequestQueue.push(dvRequest);
1018
+ this._DVThrottledResolvers.set(dvRequest.RequestID, resolvedTo);
1019
+ });
1020
+ }
1021
+ else
1022
+ DVResultPromise = api.getDisplayableValue(dvRequest.DVName, dvRequest);
1023
+ return DVResultPromise;
1024
+ }
974
1025
  /**
975
1026
  * Async Get Part Configuration Data given part name, doc type and context
976
1027
  */
@@ -1124,6 +1175,40 @@ class sfRestClient {
1124
1175
  // });
1125
1176
  return forElement;
1126
1177
  }
1178
+ /** checks with server up to 5 times a second. promise resolves when task has ended or callback returns true;
1179
+ * @param taskKey guid key for task
1180
+ * @param sessionClient optional existing SessionClient
1181
+ * @param progressCallback optional callback for when task status is not 200; if this callback returns true, promise is resolved
1182
+ */
1183
+ async WaitForTask(taskKey, sessionClient, progressCallback) {
1184
+ if (!sessionClient)
1185
+ sessionClient = new SwaggerClients_1.SessionClient();
1186
+ var RESTClient = this;
1187
+ if (sfRestClient._Options.TaskStatePollInterval < 200)
1188
+ sfRestClient._Options.TaskStatePollInterval = 200;
1189
+ return new Promise(async (result) => {
1190
+ var taskResult, waitResult;
1191
+ taskResult = new _SwaggerClientExports.HttpResponseJsonContent({ ThisStatus: 202 });
1192
+ var aborted = false;
1193
+ while (!aborted && taskResult.ThisStatus == 202) {
1194
+ await new Promise(r => setTimeout(r, sfRestClient._Options.TaskStatePollInterval));
1195
+ var taskCheck = sessionClient.getTaskState(taskKey).then(t => taskResult = t).catch(x => { taskResult = x; });
1196
+ await taskCheck;
1197
+ if (taskResult.ThisStatus == 202) {
1198
+ if (progressCallback) {
1199
+ if (progressCallback(taskResult)) {
1200
+ result(taskResult);
1201
+ aborted = true;
1202
+ }
1203
+ }
1204
+ else if (taskResult.ThisReason) {
1205
+ RESTClient.DisplayUserNotification(taskResult.ThisReason);
1206
+ }
1207
+ }
1208
+ }
1209
+ result(taskResult);
1210
+ });
1211
+ }
1127
1212
  /**
1128
1213
  * Converts traditional .NET date formats to Webix formats
1129
1214
  * @param dotNetFormat something like d or m/d/yyyy
@@ -3949,7 +4034,8 @@ sfRestClient._Options = {
3949
4034
  PopupWindowViewUserVWS: { top: -1, left: -1, width: 1000, height: 605 },
3950
4035
  PopupWindowTop: 45,
3951
4036
  ProjectLegacyURL: '{0}/ProjectDetail.aspx?id={1}',
3952
- ProjectXBURL: '{0}/spax.html#!/main/projectDashboard?project={1}'
4037
+ ProjectXBURL: '{0}/spax.html#!/main/projectDashboard?project={1}',
4038
+ TaskStatePollInterval: 357
3953
4039
  };
3954
4040
  sfRestClient.GAPageHitSent = false; // !!! this needs work
3955
4041
  sfRestClient.GAMonitorSendFailed = false;