@adaptabletools/adaptable 11.1.1-canary.2 → 11.1.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable",
3
- "version": "11.1.1-canary.2",
3
+ "version": "11.1.1",
4
4
  "description": "Powerful data-agnostic HTML5 datagrid add-on that sits on top of an underlying grid component and provides all the rich functionality that advanced users expect from their DataGrids and Data Tables",
5
5
  "keywords": [
6
6
  "web-components",
@@ -17,7 +17,7 @@
17
17
  "blotter"
18
18
  ],
19
19
  "homepage": "http://www.adaptabletools.com/",
20
- "license": "SEE LICENSE IN LICENSE.md",
20
+ "license": "contact sales@adaptabletools.com for details",
21
21
  "author": {
22
22
  "name": "Jonny Wolfson",
23
23
  "email": "jonny.wolfson@adaptabletools.com"
@@ -1,2 +1,2 @@
1
- declare const _default: 1648502167403;
1
+ declare const _default: 1648553646478;
2
2
  export default _default;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = 1648502167403;
3
+ exports.default = 1648553646478;
@@ -10,7 +10,8 @@ class EventApiImpl extends ApiBase_1.ApiBase {
10
10
  this.on = (eventName, callback) => {
11
11
  let result;
12
12
  if (eventName === 'AdaptableReady') {
13
- result = this.emitter.onIncludeFiredOnce(eventName, callback);
13
+ this.emitter.onIncludeFiredOnce(eventName).then(callback);
14
+ return () => { };
14
15
  }
15
16
  else {
16
17
  result = this.emitter.on(eventName, callback);
@@ -2,16 +2,16 @@ import { AdaptableModule } from '../PredefinedConfig/Common/Types';
2
2
  import { ExpressionFunctionMap } from '../types';
3
3
  import { AdaptableQuery } from '../PredefinedConfig/Common/AdaptableQuery';
4
4
  /**
5
- * Manages AdapTableQL (Query Language)
5
+ * Functions related to AdapTableQL (the Adaptable Query Language)
6
6
  */
7
7
  export interface QueryLanguageApi {
8
8
  /**
9
9
  * Whether the given BooleanExpression is valid
10
- * @param query query to Check
10
+ * @param expression query to Check
11
11
  * @param module module specific query
12
12
  * @param validationErrorMessage optional validation error message; if provided, the error will be logged
13
13
  */
14
- isValidBooleanExpression(query: string, module: AdaptableModule, validationErrorMessage?: string): boolean;
14
+ isValidBooleanExpression(expression: string, module: AdaptableModule, validationErrorMessage?: string): boolean;
15
15
  /**
16
16
  * Whether the given ObservableExpression is valid
17
17
  * @param expression - ObservableExpression to check
@@ -34,7 +34,7 @@ export interface QueryLanguageApi {
34
34
  */
35
35
  isValidAggregatedScalarExpression(expression: string, module: AdaptableModule, validationErrorMessage?: string): boolean;
36
36
  /**
37
- * Returns all Columns referenced in a QueryExpression
37
+ * Returns all Columns referenced in an Expression
38
38
  * @param expression - expression to check
39
39
  */
40
40
  getColumnsFromExpression(expression: string): string[];
@@ -47,12 +47,12 @@ export interface QueryLanguageApi {
47
47
  */
48
48
  getModuleExpressionFunctionMap(): ExpressionFunctionMap;
49
49
  /**
50
- * Runs the AST that AdapTableQL creates for a expression - useful when evaluating remotely
50
+ * Runs the AST that AdapTableQL creates for an Expression - useful when evaluating remotely
51
51
  * @param expression expression to be run
52
52
  */
53
53
  getASTForExpression(expression: string): any;
54
54
  /**
55
- * Returns the Expression string of the given AdaptableQuery, which may be either a Boolean, an AggregatedBoolean, a Scalar, an AggregatedScalar or an ObservableExpression expression
55
+ * Returns the Expression string of the given AdaptableQuery: can be Boolean, AggregatedBoolean, Scalar, AggregatedScalar or Observable Expression
56
56
  * @param query - the AdaptableQuery
57
57
  */
58
58
  getAdaptableQueryExpression(query: Partial<AdaptableQuery>): string | undefined;
@@ -11,4 +11,4 @@ exports.AggregatedBooleanQueryDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptab
11
11
  exports.AggregatedScalarQueryDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-ql-expression-aggregation#aggregated-scalar-expressions`;
12
12
  exports.PredicateDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-ql-predicate`;
13
13
  exports.PrimaryKeyDocsLink = `${exports.HOST_URL_DOCS}/guide/dev-guide-tutorial-primary-key`;
14
- exports.LicenseDocsLink = `${exports.HOST_URL_DOCS}/licensing`;
14
+ exports.LicenseDocsLink = `${exports.HOST_URL_DOCS}/guide/licensing`;
@@ -7,7 +7,7 @@ declare class Emittery {
7
7
  on(eventName: string, listener: EmitterCallback): any;
8
8
  off(eventName: string, listener: EmitterCallback): void;
9
9
  once(eventName: string): Promise<unknown>;
10
- onIncludeFiredOnce(eventName: string, listener: EmitterCallback): any;
10
+ onIncludeFiredOnce(eventName: string): Promise<any>;
11
11
  onIncludeFired(eventName: string, listener: EmitterCallback): any;
12
12
  emit(eventName: string, eventData?: any): Promise<any[]>;
13
13
  emitSync(eventName: string, eventData?: any): any[];
@@ -100,16 +100,13 @@ class Emittery {
100
100
  });
101
101
  });
102
102
  }
103
- onIncludeFiredOnce(eventName, listener) {
103
+ onIncludeFiredOnce(eventName) {
104
104
  const triggeredEventsMap = triggeredMap.get(this);
105
105
  const eventInfo = triggeredEventsMap.get(eventName);
106
106
  if (eventInfo) {
107
- listener(eventInfo.data);
108
- return () => { };
109
- }
110
- else {
111
- return this.on(eventName, listener);
107
+ return Promise.resolve(eventInfo.data);
112
108
  }
109
+ return this.once(eventName);
113
110
  }
114
111
  onIncludeFired(eventName, listener) {
115
112
  const triggeredEventsMap = triggeredMap.get(this);
@@ -202,7 +202,6 @@ class Adaptable {
202
202
  this.getGroupAndColumnDefs = () => {
203
203
  const colDefs = [].concat(this.currentColumnDefs || this.gridOptions.columnDefs);
204
204
  return colDefs;
205
- // return this.gridOptions.columnApi.getAllColumns().map((c) => c.getColDef());
206
205
  };
207
206
  this.getColumnDefsWithCorrectVisibility = () => {
208
207
  const visibleColIds = this.api.layoutApi.getCurrentVisibleColumnIdsMap();
@@ -2064,20 +2063,54 @@ class Adaptable {
2064
2063
  });
2065
2064
  }
2066
2065
  updateColDefsForSpecialColumns() {
2066
+ const allColDefs = this.getGroupAndColumnDefs();
2067
2067
  const specialColDefs = this.getColDefsForSpecialColumns();
2068
- const isUserColDef = (colDef) => {
2068
+ const isSpecialColDef = (colDef) => {
2069
2069
  const { type } = colDef;
2070
2070
  if (type === GeneralConstants_1.AB_SPECIAL_COLUMN || (Array.isArray(type) && type.includes(GeneralConstants_1.AB_SPECIAL_COLUMN))) {
2071
- return false;
2071
+ return true;
2072
2072
  }
2073
- return true;
2073
+ return false;
2074
+ };
2075
+ const isColGroupDef = (columnDefinition) => {
2076
+ // @ts-ignore
2077
+ return columnDefinition['children'] != null;
2078
+ };
2079
+ const processedSpecialColDefIds = [];
2080
+ const mapColDefs = (colDefs) => {
2081
+ return colDefs.map((colDef) => {
2082
+ if (isColGroupDef(colDef)) {
2083
+ // if it's a group column, recursively map its children
2084
+ colDef.children = mapColDefs(colDef.children);
2085
+ return colDef;
2086
+ }
2087
+ else {
2088
+ if (!isSpecialColDef(colDef)) {
2089
+ // if it's not a special column, return it as is
2090
+ return colDef;
2091
+ }
2092
+ const newlyCreatedSpecialColDef = specialColDefs.find((specialColDef) => specialColDef.colId === colDef.colId);
2093
+ if (newlyCreatedSpecialColDef) {
2094
+ // if it's a special column and we have a special col def for it, return the special col def
2095
+ processedSpecialColDefIds.push(colDef.colId);
2096
+ return newlyCreatedSpecialColDef;
2097
+ }
2098
+ else {
2099
+ // otherwise, return the original col def
2100
+ return colDef;
2101
+ }
2102
+ }
2103
+ });
2074
2104
  };
2075
- // const userColDefs = this.gridOptions.columnApi
2076
- // .getAllColumns()
2077
- // .map((col) => col.getColDef())
2078
- const userColDefs = this.getGroupAndColumnDefs().filter(isUserColDef);
2079
- const allDefs = [...userColDefs, ...specialColDefs];
2080
- this.safeSetColDefs(allDefs);
2105
+ const resultColDefs = mapColDefs(allColDefs);
2106
+ // check if there are any special colDefs that were not processed
2107
+ // in that case, add them to the end of the colDefs
2108
+ specialColDefs.forEach((specialColDef) => {
2109
+ if (!processedSpecialColDefIds.includes(specialColDef.colId)) {
2110
+ resultColDefs.push(specialColDef);
2111
+ }
2112
+ });
2113
+ this.safeSetColDefs(resultColDefs);
2081
2114
  this.setLayout();
2082
2115
  }
2083
2116
  cleanupFloatingFilters_WORKAROUND() {
@@ -50,6 +50,8 @@ export declare class AdaptableNumberEditor implements ICellEditorComp {
50
50
  afterGuiAttached(): void;
51
51
  destroy(): void;
52
52
  private onValueChange;
53
+ private getStartValue;
53
54
  private shouldClearExistingValue;
55
+ private isValidChar;
54
56
  }
55
57
  export {};
@@ -40,7 +40,7 @@ class AdaptableNumberEditor {
40
40
  };
41
41
  }
42
42
  init(params) {
43
- this.value = this.shouldClearExistingValue(params) ? '' : params.value;
43
+ this.value = this.getStartValue(params);
44
44
  this.params = params;
45
45
  this.columnId = params.column.getColId();
46
46
  const { valueParser } = params.column.getColDef();
@@ -72,7 +72,7 @@ class AdaptableNumberEditor {
72
72
  afterGuiAttached() {
73
73
  var _a, _b;
74
74
  const adaptable = this.params.api.__adaptable;
75
- const defaultValue = this.shouldClearExistingValue(this.params) ? '' : this.params.value;
75
+ const defaultValue = this.value;
76
76
  const editorElement = (React.createElement(InternalAdaptableNumberEditor_1.InternalAdaptableNumberEditor, { defaultValue: defaultValue, showClearButton: (_a = this.params.showClearButton) !== null && _a !== void 0 ? _a : true, emptyValue: (_b = this.params.emptyValue) !== null && _b !== void 0 ? _b : '', onValueChange: this.onValueChange, ref: (editor) => {
77
77
  this.editor = editor;
78
78
  editor === null || editor === void 0 ? void 0 : editor.focus();
@@ -92,8 +92,22 @@ class AdaptableNumberEditor {
92
92
  destroy() {
93
93
  react_dom_1.unmountComponentAtNode(this.el);
94
94
  }
95
+ getStartValue(params) {
96
+ if (this.shouldClearExistingValue(params)) {
97
+ return '';
98
+ }
99
+ if (params.charPress && this.isValidChar(params.charPress)) {
100
+ return params.charPress;
101
+ }
102
+ return params.value;
103
+ }
95
104
  shouldClearExistingValue(params) {
96
105
  return params.eventKey === all_modules_1.KeyCode.BACKSPACE || params.eventKey === all_modules_1.KeyCode.DELETE;
97
106
  }
107
+ isValidChar(char) {
108
+ // allow only digits
109
+ return ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(char);
110
+ // we do NOT allow key shortcuts for starting non-digits (minus sign, decimal separators) as the input[number] handling is very buggy and we would open a can of worms
111
+ }
98
112
  }
99
113
  exports.AdaptableNumberEditor = AdaptableNumberEditor;
@@ -9495,24 +9495,24 @@ exports.ADAPTABLE_METAMODEL = {
9495
9495
  "QueryLanguageApi": {
9496
9496
  "name": "QueryLanguageApi",
9497
9497
  "kind": "Interface",
9498
- "description": "Manages AdapTableQL (Query Language)",
9498
+ "description": "Functions related to AdapTableQL (the Adaptable Query Language)",
9499
9499
  "properties": [
9500
9500
  {
9501
9501
  "name": "getAdaptableQueryExpression",
9502
9502
  "kind": "function",
9503
- "description": "Returns the Expression string of the given AdaptableQuery, which may be either a Boolean, an AggregatedBoolean, a Scalar, an AggregatedScalar or an ObservableExpression expression",
9503
+ "description": "Returns the Expression string of the given AdaptableQuery: can be Boolean, AggregatedBoolean, Scalar, AggregatedScalar or Observable Expression",
9504
9504
  "uiLabel": "Get Adaptable Query Expression"
9505
9505
  },
9506
9506
  {
9507
9507
  "name": "getASTForExpression",
9508
9508
  "kind": "function",
9509
- "description": "Runs the AST that AdapTableQL creates for a expression - useful when evaluating remotely",
9509
+ "description": "Runs the AST that AdapTableQL creates for an Expression - useful when evaluating remotely",
9510
9510
  "uiLabel": "Get AST For Expression"
9511
9511
  },
9512
9512
  {
9513
9513
  "name": "getColumnsFromExpression",
9514
9514
  "kind": "function",
9515
- "description": "Returns all Columns referenced in a QueryExpression",
9515
+ "description": "Returns all Columns referenced in an Expression",
9516
9516
  "uiLabel": "Get Columns From Expression"
9517
9517
  },
9518
9518
  {
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "11.1.1-canary.2";
1
+ declare const _default: "11.1.1";
2
2
  export default _default;
package/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '11.1.1-canary.2'; // PLEASE DONT UPDATE THIS!!! - will be updated at build time with the correct version
3
+ exports.default = '11.1.1'; // PLEASE DONT UPDATE THIS!!! - will be updated at build time with the correct version
package/LICENSE.md DELETED
@@ -1,264 +0,0 @@
1
- End User Licence Agreement
2
- This End User Licence Agreement (“Licence”) is a legal agreement between you the client (“Client” or “you”), and Traders Tools Limited (“TTL”) relating to the use of TTL’s Adaptable software Adaptable.NET (for use in WPF and WinForms applications) or Adaptable.JS (for use in HTML5 applications) (together, the “Software”).
3
-
4
- By accepting the terms of this Licence or downloading, installing, copying, or otherwise using the Software, you represent and warrant that you are an authorized representative of Client and have the authority to bind Client to the terms of this Licence.
5
- If you do not accept the terms of this Licence, you must not download, install, copy, or otherwise use the Software and TTL will not grant a licence of the Software to you. In such an event, please contact the TTL as soon as possible to obtain a refund of any amounts paid for the Software.
6
-
7
- TTL provides the following:
8
-
9
- • Developer Licence: you may use the source code to Adaptable.JS to modify and adapt the Software under a free developer licence.
10
-
11
- • User Licence: you may only use the Software in a production environment if you have executed a Sales Order with TTL and paid the applicable annual licence fees.
12
-
13
- • Support: The annual user licence fee includes extensive online help to support users and client support teams working with them. In addition, the annual user licence fee includes unlimited support for the first month after the contract period has started, and up to a further 20 queries per year to Adaptable Tools support team. Additional support, over and above these levels, can be provided if required but will attract an additional fee. Support services will be supplied under and subject to the terms and conditions of TTL’s Support Schedule for the time being in force..
14
-
15
- 1. LICENCE
16
-
17
- 1.1 Developer Licence: In consideration of Client agreeing to and complying with the terms of this Licence TTL hereby grants to Client a non-exclusive, non-transferable licence to use the source code version of Adaptable.JS to copy, modify, adapt, merge, translate, disassemble, decompile, recompile or reverse engineer Adaptable.JS, create derivative works based on the whole of or any part of Adaptable.JS and incorporate Adaptable.JS into other products.
18
-
19
- 1.2 User Licence: In consideration of Client paying the applicable annual licence fees to TTL and agreeing to and complying with the terms of this Licence TTL hereby grants to Client, for the user licence term as set out in the Sales Order, a non-exclusive, non-transferable licence to use the object code version of the Software at the Client’s site(s) set out in the Sales Order.
20
-
21
- 1.3 The annual licence fee includes unlimited use of both versions of the Software. However, the annual licence fee does not include the AG Grid licence which will need to be purchased separately from AG Grid.
22
-
23
- 1.4 The user licence shall be effective upon its first installation or use of the Software, and shall continue for the licence term set out in the Sales Order subject to termination under clause 14.1.
24
-
25
- 2. RESTRICTIONS
26
-
27
- 2.1 Client acknowledges that all intellectual property rights in the Software are, and shall remain, the property of TTL or the relevant third-party owners (as the case may be) and that Client shall have no rights in or to the Software other than the right to use it in accordance with the express terms of this Licence.
28
-
29
- 2.2 TTL acknowledges that all intellectual property rights in any modifications to the Software or derivatives thereof made by Client under a developer licence shall belong to Client, subject to TTL’s ownership of the underlying Software.
30
-
31
- 2.3 Client shall at all times comply with the following licence restrictions in exercising the rights granted in clause 1:
32
-
33
- 2.3.1 ensure that the number of persons using the Software does not exceed the number set out in the Sales Order;
34
-
35
- 2.3.2 pay for any additional users in accordance with TTL’s standard rate card of licence fees then current;
36
-
37
- 2.3.3 keep a complete and accurate record of Client's users of the Software, and produce such record to TTL on request from time to time;
38
-
39
- 2.3.1 effect and maintain adequate security measures to safeguard the Software from unauthorised access, use or copying by any person;
40
-
41
- 2.3.2 notify TTL as soon as it becomes aware of any unauthorized use of the Software by any person.
42
-
43
- 2.3.3 Client shall not rent, lease, or transfer the Software to any third party, nor use it to operate a rental, leasing, or service bureau business or any similar hosting or subscription arrangement.
44
-
45
- 2.3.4 Client may use the Software only for its internal business purposes as described in the Sales Order.
46
-
47
- 2.3.5 Client shall not conceal, modify, remove, or destroy in any way any proprietary markings on or in the Software including without limitation any copyright notices or confidential legends placed upon or contained within the Software.
48
-
49
- 2.4 Client may permit outsourcers, consultants, contractors, auditors, disaster recovery service providers, hosted service providers, distributors, agents, representatives, and other third parties providing services to Client (each, an “Agent”) to use the Software, but solely for the benefit of Client. Client shall procure that each such Agent (other than an auditor) shall agree (i) to use the Software solely for the benefit of Client, and (ii) not to disclose the Software to any other third party, without Client’s prior written approval. Client shall be responsible for the compliance by such Agents with the terms and conditions of the Licence.
50
-
51
- 2.5 Client shall inform its employees and Agents who use the Software of the terms and conditions governing such use, and shall be responsible for their compliance with the terms of this Licence.
52
-
53
- 2.6 Client shall permit TTL to inspect and have access to the Client’s site(s) set out in the Sales Order (and to the computer equipment located there) or any other premises at or on which the Software is being kept or used, and have access to any records kept in connection with this Licence, for the purposes of ensuring that Client is complying with the terms of this Licence, provided that TTL provides reasonable advance notice to Client of such inspection, which shall take place during normal business hours.
54
-
55
- 2.7 Save as expressly set out in this Licence, Client shall not acquire any title, rights of ownership, intellectual property rights of whatever nature in the Software and all rights in and to the Software not expressly granted under this Licence are reserved by TTL and/or its suppliers.
56
-
57
- 3. FEES
58
-
59
- 3.1 For a user licence Client shall pay to TTL the annual licence fees as set out in the Sales Order.
60
-
61
- 3.2 The annual licence fee will be invoiced according to the following schedule:
62
-
63
- 3.2.1 25% on signature of the Sales Order;
64
-
65
- 3.2.2 25% when the user licence period formally starts (i.e. on deployment to the first end user);
66
-
67
- 3.2.3 50% in either quarterly or monthly instalments from 6 months after the user licence period starts.
68
-
69
- 3.3 Thereafter, annual licence fees will be invoiced in advance on either a quarterly or monthly basis.
70
-
71
- 3.4 All payments are due within 30 days of invoice.
72
-
73
- 3.5 All sums payable under this Licence are exclusive of VAT or any relevant local sales taxes, for which Client shall be responsible.
74
-
75
- 3.6 If Client fails to make any payment due to TTL under this Licence by the due date for payment, then, without limiting TTL's remedies under clause 14, Client shall pay interest on the overdue amount at the rate of 4% per annum above the Bank of England's base rate from time to time. Such interest shall accrue on a daily basis from the due date until actual payment of the overdue amount, whether before or after judgment. Client shall pay the interest together with the overdue amount.
76
-
77
- 4. UPDATES
78
-
79
- 4.1 Under the annual user licence fee includes not less than four scheduled quarterly updates through the duration of user licence period, as well as ad-hoc releases for urgent bug fixes. Client shall install all such updates as soon as reasonably practicable after receipt.
80
-
81
- 4.2 TTL shall provide support for all AG Grid major version releases within a maximum period of three months of the update.
82
-
83
- 5. THIRD PARTY SOFTWARE
84
-
85
- 5.1 Save as set out in clause 22, no third party software shall be deemed to be incorporated within the Software for the purposes of this Licence (except where expressly provided to the contrary in the Sales Order) and use of AG Grid software shall be subject to AG Grid’s end user licence terms.
86
-
87
- 5.2 Client shall indemnify and hold TTL harmless against any liabilities, costs, damages and losses which TTL may suffer or incur as a result of any unauthorised use by Client of any third party software or any breach by Client of any third party end user licence terms howsoever arising. TTL may treat any such unauthorised use or breach as a breach of this Licence.
88
-
89
- 6. SUPPORT
90
-
91
- 6.1 TTL is not obligated to provide any technical or other support services for the Software unless Client is subscribing for (and has paid the applicable fees in full for) support services.
92
-
93
- 6.2 Where Client has subscribed to receive support services, Client agrees that such support services will be supplied under and subject to the terms and conditions of TTL’s Support Schedule for the time being in force..
94
-
95
- 7. LIMITED WARRANTY
96
-
97
- 7.1 Subject to the Client paying the applicable annual user licence fees to TTL, TTL warrants that the Software will perform substantially in accordance with the accompanying documentation for a period of thirty (30) days from the date of Client’s receipt of the Software.
98
-
99
- 7.2 TTL does not warrant that the use of the Software will be free from interruption or error-free.
100
-
101
- 7.3 Client accepts responsibility for the selection of the Software to achieve its intended results and acknowledges that the Software has not been developed or configured to meet the individual requirements of Client.
102
-
103
- 7.4 Client’s exclusive remedy for any breach of the foregoing limited warranty shall be, at TTL’s option, either (a) return of the price paid by Client for the non-conforming portion of the Software, or (b) repair or replacement the non-conforming portion of the Software. This limited warranty shall not apply if failure of the Software has resulted from accident, abuse, or misuse by anyone other than TTL.
104
-
105
- 8. DISCLAIMER
106
-
107
- 8.1 Except as expressly stated in this Licence, all warranties, conditions and terms, whether express or implied by statute, common law or otherwise, including the implied conditions, warranties or other terms as to satisfactory quality, fitness for purpose, non-infringement or the use of reasonable skill and care, are hereby excluded to the extent permitted by law.
108
-
109
- 8.2 Client is solely responsible for ensuring that the Software interoperates and intermediates properly with any third-party software or hardware, and TTL expressly disclaims any liability with respect to any failure of the Software to interoperate or intermediate with such third-party software or hardware.
110
-
111
- 9. LIMITATION OF LIABILITY
112
-
113
- 9.1 Neither party excludes or limits liability to the other party for:
114
-
115
- 9.1.1 fraud or fraudulent misrepresentation;
116
-
117
- 9.1.2 death or personal injury caused by negligence; or
118
-
119
- 9.1.3 any other liability which may not be excluded by law.
120
-
121
- 9.2 TTL shall not in any circumstances be liable whether contract, tort (including negligence or breach of statutory duty), misrepresentation (whether innocent or negligent), restitution or otherwise, for any:
122
-
123
- 9.2.1 loss of profits, loss of business, depletion of goodwill and/or similar losses (direct or indirect); or
124
-
125
- 9.2.2 loss or corruption of data or information, or
126
-
127
- 9.2.3 special, indirect or consequential loss costs, damages, charges or expenses however.
128
-
129
- 9.3 TTL’s total aggregate liability in contract, tort (including negligence or breach of statutory duty), misrepresentation (whether innocent or negligent), restitution or otherwise, arising under or in connection with this Licence shall in no event exceed the fees paid by Client for the Software licensed under this Licence.
130
-
131
- 10. INTELLECTUAL PROPERTY RIGHTS INDEMNITY
132
-
133
- 10.1 TTL shall defend Client from and against any claim or action that the possession or use of the Software in accordance with this Licence infringes any intellectual property right of a third party (“IPR Claim”) and shall be responsible for any losses, damages, costs (including reasonable legal fees) and expenses incurred by or awarded against Client as a result of, or in connection with, such IPR Claim, provided that, if any third party makes an IPR Claim, or notifies an intention to make an IPR Claim against Client, Client shall:
134
-
135
- 10.1.1 give written notice of the IPR Claim to TTL as soon as reasonably practicable;
136
-
137
- 10.1.2 not make any admission of liability in relation to the IPR Claim without the prior written consent of TTL;
138
-
139
- 10.1.3 at TTL’s request and expense, allow TTL to conduct the defence of the IPR Claim including settlement; and
140
-
141
- 10.1.4 at TTL’s expense, co-operate and assist to a reasonable extent with TTL’s defence of the IPR Claim.
142
-
143
- 10.2 Clause 10.1 shall not apply to:
144
-
145
- 10.2.1 use or combination of the Software with other software not provided by TTL where the alleged infringement arises out of or relates to such use or combination; or
146
-
147
- 10.2.2 the extent that the Software has been modified by Client or anyone other than by TTL;
148
-
149
- 10.2.3 use of a non-current release of the Software;
150
-
151
- 10.2.4 claims caused by Client’s negligence, abuse, misuse, or misapplication of the Software.
152
-
153
- 10.3 If any IPR Claim is made, or in TTL’s reasonable opinion is likely to be made, against Client, TTL may at its sole option and expense:
154
-
155
- 10.3.1 procure for Client the right to continuing using the Software in accordance with this Licence;
156
-
157
- 10.3.2 modify the Software so that it ceases to be infringing;
158
-
159
- 10.3.3 replace the Software (wholly or in part) with non-infringing software; or
160
-
161
- 10.3.4 terminate this Licence immediately by notice in writing to Client and refund any fees paid by Client as at the date of termination (less a reasonable sum in respect of Client's use of the Software to the date of termination) on return of the Software and all copies thereof.
162
-
163
- 10.4 This clause 10 constitutes Client's exclusive remedy and the TTL’s only liability in respect of IPR Claims and, for the avoidance of doubt, is subject to clause 9.
164
-
165
- 11. RESTRICTED RIGHTS
166
-
167
- 11.1 Client shall not shall export, directly or indirectly, any technical data acquired from TTL under this Licence (or any products, including software, incorporating any such data) in breach of any applicable laws or regulations (Export Control Laws), including United States export laws and regulations, to any country for which the government or any agency thereof at the time of export requires an export licence or other governmental approval without first obtaining such licence or approval.
168
-
169
- 11.2 Client undertakes: (a) contractually to oblige any third party to whom it discloses or transfers any such data or products to make an undertaking to it in similar terms to the one set out above; and (b) if requested, to provide TTL with any reasonable assistance to enable it to perform any activity required by any competent government or agency in any relevant jurisdiction for the purpose of compliance with any Export Control Laws.
170
-
171
- 12. CONFIDENTIALITY
172
-
173
- 12.1 Client acknowledges and agrees that the Software and all proprietary technology, know-how and documentation related to the Software, constitute confidential proprietary information of TTL. Accordingly, Client shall not disclose to any person or entity any information about the Software or other TTL confidential information that is furnished to or otherwise becomes known to Client, except that Client may disclose such information on a need to know basis to its employees who are obligated to maintain the confidentiality of such information.
174
-
175
- 12.2 Client’s obligation to maintain the confidentiality of such information shall not apply to information which:
176
-
177
- 12.2.1 was known to Client before receiving such information;
178
-
179
- 12.2.2 is in the public domain;
180
-
181
- 12.2.3 is received by Client from a third party who was legally entitled to make an unrestricted disclosure, or
182
-
183
- 12.2.4 Client can show to the reasonable satisfaction of TTL that such information has been developed independently to TTL’s confidential information.
184
-
185
- 13. COMPLIANCE WITH LAWS
186
-
187
- 13.1 Client shall comply with all applicable laws, regulations, rules, ordinances, and orders regarding its use of the Software.
188
-
189
- 14. TERMINATION
190
-
191
- 14.1 TTL may terminate this Licence by written notice to Client with immediate effect, if Client:
192
-
193
- 14.1.1 fails to pay any amount due under this Licence on the due date for payment and remains in default 14 days after being notified in writing to make that payment;
194
-
195
- 14.1.2 commits a breach of any term of this Licence (other than failure to pay any amounts due under this Licence) and (if that breach is remediable) fails to remedy that breach within a period of 30 days after being notified in writing to do so;
196
-
197
- 14.1.3 becomes subject to any voluntary arrangement, is unable to pay its debts within the meaning of Section 123 of the Insolvency Act 1986, has a receiver, manager, administrator or administrative receiver appointed over its assets, undertakings or income, has passed a resolution for its winding-up, or has a petition presented to any Court for its winding-up or for an administration order or suffers any similar or analogous proceedings in any jurisdiction;
198
-
199
- 14.1.4 has any distraint, execution or other process levied or enforced on any of its property; or
200
-
201
- 14.1.5 is dissolved or ceases or threatens to cease to trade.
202
-
203
- 14.2 Following termination of this Licence, Client shall, upon TTL’s written notice, immediately cease to use of the Software.
204
-
205
- 14.3 Termination of this Licence shall not affect any rights, remedies, obligations or liabilities of the parties that have accrued up to the date of termination, including the right to claim damages in respect of any breach of this Licence which existed at or before the date of termination.
206
-
207
- 14.4 On termination for any reason all rights granted to Client under this Licence shall cease and Client shall immediately destroy or return to TTL all copies of the Software then in its possession, custody or control and, in the case of destruction, certify to TTL that it has done so.
208
-
209
- 14.5 The provisions of clauses 2, 8, 9, 10, 11 and 12 of this Licence shall survive its termination, howsoever arising.
210
-
211
- 15. ASSIGNMENT
212
-
213
- 15.1 Client may not assign, subcontract or deal in any way with, any of its rights or obligations under this Licence without TTL’s prior written consent. Any attempted assignment not in accordance with this Licence shall be void. Subject to the foregoing, the rights and obligations of the parties under this Licence shall be binding upon and inure to the benefit of their successors and permitted assigns.
214
-
215
- 16. ENTIRE AGREEMENT
216
-
217
- 16.1 This Licence constitutes the entire agreement and understanding between the parties with respect to the subject matter hereof and supersedes all prior or contemporaneous written, electronic, or oral communications, representations, agreements, or understandings between the parties with respect thereto.
218
-
219
- 16.2 Client acknowledges that, in entering into this Licence, it does not rely on any statement, representation, assurance or warranty (whether it was made negligently or innocently) of any person (whether a party to this Licence or not) (Representation) other than as expressly set out in this Licence.
220
-
221
- 16.3 Client agrees that the only rights and remedies available to it arising out of or in connection with a Representation shall be for breach of contract. Nothing in this clause shall limit or exclude any liability for fraud
222
-
223
- 16.4 No provisions in any purchase order or other business forms proposed or submitted by Client will supersede the terms and conditions of this Licence.
224
-
225
- 17. VARIATIONS
226
-
227
- 17.1 No variation of this Licence shall be effective unless it is in writing and signed by the parties (or their authorised representatives).
228
-
229
- 18. WAIVER
230
-
231
- 18.1 The failure or delay of TTL to insist upon strict adherence to provisions of this Licence shall in no way constitute a waiver of the relevant provisions or any subsequent breach.
232
-
233
- 19. INVALIDITY
234
-
235
- 19.1 In the event any provision of this Licence is held invalid or unenforceable by a court of competent jurisdiction, the remainder of this Licence shall remain valid and enforceable according to its terms.
236
-
237
- 20. THIRD PARTY RIGHTS
238
-
239
- 20.1 A person who is not a party to this Licence shall not have any rights under the Contracts (Rights of Third Parties) Act 1999 to enforce any term of this Licence, but this does not affect any right or remedy of a third party which exists, or is available, apart from that Act.
240
-
241
- 21. GOVERNING LAW
242
-
243
- 21.1 This Licence and any dispute or claim arising out of or in connection with it or its subject matter or formation shall be governed by and construed in accordance with the laws of England and Wales.
244
-
245
- 21.2 The parties irrevocably agree that the courts of England and Wales shall have exclusive jurisdiction to settle any dispute or claim that arises out of or in connection with this Licence or its subject matter or formation.
246
-
247
- 22. THIRD PARTY COMPONENTS
248
-
249
- 22.1 The Software includes components of software code and redistributables that are licensed under the following licenses, permissions, and notices:
250
-
251
- 22.1.1 DevExpress - the EULA for DevExpress products can be found here: http://www.devexpress.com/Support/LicensingFAQ.xml
252
-
253
- 22.1.2 Infragistics - the EULA for Infragistics products can be found here: http://www.infragistics.com/legal/license/igultimate-la
254
-
255
- 22.1.3 Xceed - the EULA for Xceed products can be found here: https://xceed.com/xceed-software-license-agreement/
256
-
257
- 22.1.4 Telerik - the EULA for Telerik Keno professional products can be found here: http://www.telerik.com/purchase/license-agreement/kendo-ui-professional
258
-
259
- 22.1.5 AG Grid – Licencing details can be found here: https://www.ag-grid.com/license-pricing.php
260
-
261
- 22.1.6 OpenFin (Hypergrid) – Licencing details can be found here: https://raw.githubusercontent.com/openfin/fin-hypergrid/master/LICENSE
262
-
263
- 22.2 A complete list of third party components and redistributables that are included in the Software is available upon request. Such third party components and redistributables are provided "AS IS", the contributors give no express or implied condition, warranty, guarantee or indemnity and they are excluded from any condition, warranty, guarantee or indemnity provided by TTL under this Licence. All copyright and other intellectual property rights in and to such third party components and redistributables, any accompanying printed materials and any copies thereof are owned by the respective contributor.
264
-