From f9e59cc89a614d9e253cff0f9c7e93828e8eaaa0 Mon Sep 17 00:00:00 2001 From: onlyexeption Date: Mon, 1 Jun 2026 11:12:57 +0300 Subject: [PATCH 01/23] fix(avatar): set background through correct css var --- samples/layouts/avatar/styling/src/index.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/samples/layouts/avatar/styling/src/index.css b/samples/layouts/avatar/styling/src/index.css index aec0352f9e..df45dd1716 100644 --- a/samples/layouts/avatar/styling/src/index.css +++ b/samples/layouts/avatar/styling/src/index.css @@ -25,8 +25,11 @@ gap: 10px; } +igc-avatar { + --ig-avatar-background: var(--ig-success-100); +} + igc-avatar::part(base) { - background: var(--ig-success-100); border: 2px solid var(--ig-error-500); } From 2ea4456e14e0830ad64b54450bac1caa6a8e6671 Mon Sep 17 00:00:00 2001 From: Adrian Petrov Date: Fri, 5 Jun 2026 02:13:49 +0300 Subject: [PATCH 02/23] feat(): update sample slots --- .../grids/list/add-list-items/src/index.tsx | 6 +- .../list/list-item-content/src/index.tsx | 6 +- samples/grids/list/overview/src/index.tsx | 66 +++++++----------- samples/grids/list/styling/src/index.css | 0 samples/grids/list/styling/src/index.tsx | 67 +++++++----------- samples/inputs/button/contained/src/index.css | 7 +- samples/inputs/button/download/src/index.css | 7 +- samples/inputs/button/fab/src/index.css | 7 +- samples/inputs/button/flat/src/index.css | 12 +++- samples/inputs/button/outlined/src/index.css | 7 +- .../overview/src/ButtonOverviewStyle.css | 7 +- samples/inputs/button/overview/src/index.css | 2 - samples/inputs/button/overview/src/index.tsx | 1 - .../button/size/src/ButtonSizingStyle.css | 5 ++ samples/inputs/button/size/src/index.css | 2 - samples/inputs/button/size/src/index.tsx | 3 +- .../inputs/button/styling/src/ButtonStyle.css | 8 +-- samples/inputs/button/styling/src/index.css | 7 +- samples/inputs/chip/multiple/src/index.tsx | 20 ++---- .../input/size/src/InputSizeStyling.css | 1 - samples/inputs/rating/custom/src/index.tsx | 2 +- .../rating/single-selection/src/index.tsx | 20 +++--- samples/inputs/select/styling/src/index.tsx | 6 -- samples/inputs/textarea/resize/src/index.tsx | 6 +- samples/inputs/textarea/slots/src/index.tsx | 6 +- samples/inputs/textarea/styling/src/index.tsx | 6 +- .../accordion/customization/src/index.tsx | 16 ++--- .../accordion/nested-scenario/src/index.tsx | 69 ++++++------------- .../layouts/accordion/overview/src/index.tsx | 10 +-- samples/layouts/card/horizontal/src/index.tsx | 4 +- samples/layouts/card/overview/src/index.tsx | 4 +- .../card/semi-horizontal/src/index.tsx | 4 +- samples/layouts/card/styling/src/index.tsx | 4 +- .../layouts/carousel/animations/src/index.tsx | 12 ++-- .../component-customization/src/index.css | 0 .../component-customization/src/index.tsx | 5 +- .../properties-and-events/src/index.css | 0 .../properties-and-events/src/index.tsx | 5 +- .../expansion-panel/styling/src/index.css | 0 .../expansion-panel/styling/src/index.tsx | 5 +- .../expansion-panel/usage/src/index.css | 0 .../expansion-panel/usage/src/index.tsx | 5 +- samples/layouts/tabs/alignment/src/index.css | 6 +- samples/layouts/tabs/overview/src/index.tsx | 6 +- samples/layouts/tabs/styling/src/index.tsx | 6 +- .../tile-manager/actions/src/index.tsx | 8 +-- .../tile-manager/overview/src/index.tsx | 16 ++--- 47 files changed, 209 insertions(+), 263 deletions(-) delete mode 100644 samples/grids/list/styling/src/index.css delete mode 100644 samples/inputs/button/overview/src/index.css delete mode 100644 samples/inputs/button/size/src/index.css delete mode 100644 samples/layouts/expansion-panel/component-customization/src/index.css delete mode 100644 samples/layouts/expansion-panel/properties-and-events/src/index.css delete mode 100644 samples/layouts/expansion-panel/styling/src/index.css delete mode 100644 samples/layouts/expansion-panel/usage/src/index.css diff --git a/samples/grids/list/add-list-items/src/index.tsx b/samples/grids/list/add-list-items/src/index.tsx index 67d21a75b6..6d6e197512 100644 --- a/samples/grids/list/add-list-items/src/index.tsx +++ b/samples/grids/list/add-list-items/src/index.tsx @@ -18,13 +18,13 @@ export default class ListAddListItems extends React.Component { Header -

Item 1

+ Item 1
-

Item 2

+ Item 2
-

Item 3

+ Item 3
diff --git a/samples/grids/list/list-item-content/src/index.tsx b/samples/grids/list/list-item-content/src/index.tsx index 3d58052ad2..926424bb9d 100644 --- a/samples/grids/list/list-item-content/src/index.tsx +++ b/samples/grids/list/list-item-content/src/index.tsx @@ -18,15 +18,15 @@ export default class ListItemContent extends React.Component { Contacts -

Terrance Orta

+ Terrance Orta 770-504-2217
-

Richard Mahoney

+ Richard Mahoney 423-676-2869
-

Donna Price

+ Donna Price 859-496-2817
diff --git a/samples/grids/list/overview/src/index.tsx b/samples/grids/list/overview/src/index.tsx index 168e2904d9..d3aec62b2e 100644 --- a/samples/grids/list/overview/src/index.tsx +++ b/samples/grids/list/overview/src/index.tsx @@ -32,55 +32,37 @@ export default class ListOverview extends React.Component { Contacts -
- -
-

Terrance Orta

+ + Terrance Orta 770-504-2217 -
- - Text - -
-
- - Call - -
+ + Text + + + Call +
-
- -
-

Richard Mahoney

+ + Richard Mahoney 423-676-2869 -
- - Text - -
-
- - Call - -
+ + Text + + + Call +
-
- -
-

Donna Price

+ + Donna Price 859-496-2817 -
- - Text - -
-
- - Call - -
+ + Text + + + Call +
diff --git a/samples/grids/list/styling/src/index.css b/samples/grids/list/styling/src/index.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/samples/grids/list/styling/src/index.tsx b/samples/grids/list/styling/src/index.tsx index abfd0d35e3..79ec876efa 100644 --- a/samples/grids/list/styling/src/index.tsx +++ b/samples/grids/list/styling/src/index.tsx @@ -1,6 +1,5 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import './index.css'; import './ListStyling.css'; import { IgrList, IgrListItem, IgrListHeader, IgrAvatar, IgrButton } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; @@ -19,55 +18,37 @@ export default class ListStyling extends React.Component { Contacts -
- -
-

Terrance Orta

+ + Terrance Orta 770-504-2217 -
- - Text - -
-
- - Call - -
+ + Text + + + Call +
-
- -
-

Richard Mahoney

+ + Richard Mahoney 423-676-2869 -
- - Text - -
-
- - Call - -
+ + Text + + + Call +
-
- -
-

Donna Price

+ + Donna Price 859-496-2817 -
- - Text - -
-
- - Call - -
+ + Text + + + Call +
diff --git a/samples/inputs/button/contained/src/index.css b/samples/inputs/button/contained/src/index.css index 1f53b8aa05..019bfa2d76 100644 --- a/samples/inputs/button/contained/src/index.css +++ b/samples/inputs/button/contained/src/index.css @@ -1,2 +1,7 @@ /* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-button { + width: 40%; + margin: auto; +} \ No newline at end of file diff --git a/samples/inputs/button/download/src/index.css b/samples/inputs/button/download/src/index.css index 1f53b8aa05..019bfa2d76 100644 --- a/samples/inputs/button/download/src/index.css +++ b/samples/inputs/button/download/src/index.css @@ -1,2 +1,7 @@ /* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-button { + width: 40%; + margin: auto; +} \ No newline at end of file diff --git a/samples/inputs/button/fab/src/index.css b/samples/inputs/button/fab/src/index.css index 1f53b8aa05..019bfa2d76 100644 --- a/samples/inputs/button/fab/src/index.css +++ b/samples/inputs/button/fab/src/index.css @@ -1,2 +1,7 @@ /* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-button { + width: 40%; + margin: auto; +} \ No newline at end of file diff --git a/samples/inputs/button/flat/src/index.css b/samples/inputs/button/flat/src/index.css index 1f53b8aa05..9263b38c47 100644 --- a/samples/inputs/button/flat/src/index.css +++ b/samples/inputs/button/flat/src/index.css @@ -1,2 +1,12 @@ /* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +.container { + background: var(--ig-surface-600); +} + +igc-button { + width: 40%; + margin: auto; + background: var(--ig-surface-50); +} \ No newline at end of file diff --git a/samples/inputs/button/outlined/src/index.css b/samples/inputs/button/outlined/src/index.css index 1f53b8aa05..019bfa2d76 100644 --- a/samples/inputs/button/outlined/src/index.css +++ b/samples/inputs/button/outlined/src/index.css @@ -1,2 +1,7 @@ /* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-button { + width: 40%; + margin: auto; +} \ No newline at end of file diff --git a/samples/inputs/button/overview/src/ButtonOverviewStyle.css b/samples/inputs/button/overview/src/ButtonOverviewStyle.css index 3897a4b65a..8fbc85d09d 100644 --- a/samples/inputs/button/overview/src/ButtonOverviewStyle.css +++ b/samples/inputs/button/overview/src/ButtonOverviewStyle.css @@ -1,5 +1,6 @@ .button-container { - display: flex; - justify-content: space-evenly; - margin-top: 20px; + display: flex; + justify-content: space-evenly; + align-items: center; + height: 100%; } \ No newline at end of file diff --git a/samples/inputs/button/overview/src/index.css b/samples/inputs/button/overview/src/index.css deleted file mode 100644 index 1f53b8aa05..0000000000 --- a/samples/inputs/button/overview/src/index.css +++ /dev/null @@ -1,2 +0,0 @@ -/* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file diff --git a/samples/inputs/button/overview/src/index.tsx b/samples/inputs/button/overview/src/index.tsx index de65eed692..7378171941 100644 --- a/samples/inputs/button/overview/src/index.tsx +++ b/samples/inputs/button/overview/src/index.tsx @@ -1,6 +1,5 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import './index.css'; import './ButtonOverviewStyle.css'; import { IgrButton } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; diff --git a/samples/inputs/button/size/src/ButtonSizingStyle.css b/samples/inputs/button/size/src/ButtonSizingStyle.css index d6c4c995fe..d2f4c0b947 100644 --- a/samples/inputs/button/size/src/ButtonSizingStyle.css +++ b/samples/inputs/button/size/src/ButtonSizingStyle.css @@ -1,9 +1,14 @@ .button-container { display: flex; justify-content: space-evenly; + align-items: center; margin-top: 20px; } +.container { + justify-content: center; +} + .size-small { --ig-size: var(--ig-size-small); } diff --git a/samples/inputs/button/size/src/index.css b/samples/inputs/button/size/src/index.css deleted file mode 100644 index 1f53b8aa05..0000000000 --- a/samples/inputs/button/size/src/index.css +++ /dev/null @@ -1,2 +0,0 @@ -/* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file diff --git a/samples/inputs/button/size/src/index.tsx b/samples/inputs/button/size/src/index.tsx index 02dfd28212..b0cad952dd 100644 --- a/samples/inputs/button/size/src/index.tsx +++ b/samples/inputs/button/size/src/index.tsx @@ -1,6 +1,5 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import './index.css'; import './ButtonSizingStyle.css'; import { IgrButton, IgrRadio, IgrRadioGroup } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; @@ -16,7 +15,7 @@ export default class ButtonSize extends React.Component { public render(): JSX.Element { return (
- + Small diff --git a/samples/inputs/button/styling/src/ButtonStyle.css b/samples/inputs/button/styling/src/ButtonStyle.css index 231d8cf896..8e9b561851 100644 --- a/samples/inputs/button/styling/src/ButtonStyle.css +++ b/samples/inputs/button/styling/src/ButtonStyle.css @@ -1,8 +1,4 @@ igc-button::part(base) { - color: #011627; -} - -igc-button::part(base)::before { - background-color: #e99221; - padding: 18px; + background-color: var(--ig-warn-700); + color: var(--ig-warn-700-contrast); } diff --git a/samples/inputs/button/styling/src/index.css b/samples/inputs/button/styling/src/index.css index 1f53b8aa05..019bfa2d76 100644 --- a/samples/inputs/button/styling/src/index.css +++ b/samples/inputs/button/styling/src/index.css @@ -1,2 +1,7 @@ /* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-button { + width: 40%; + margin: auto; +} \ No newline at end of file diff --git a/samples/inputs/chip/multiple/src/index.tsx b/samples/inputs/chip/multiple/src/index.tsx index c18a64e808..41adda21ec 100644 --- a/samples/inputs/chip/multiple/src/index.tsx +++ b/samples/inputs/chip/multiple/src/index.tsx @@ -42,31 +42,21 @@ export default class ChipMultiple extends React.Component {
- - - + Custom Icons - - - + - - - + Start Slot End Slot - - - + Disabled Chip - - - +
diff --git a/samples/inputs/input/size/src/InputSizeStyling.css b/samples/inputs/input/size/src/InputSizeStyling.css index 4100cf7691..8f9e811e64 100644 --- a/samples/inputs/input/size/src/InputSizeStyling.css +++ b/samples/inputs/input/size/src/InputSizeStyling.css @@ -7,5 +7,4 @@ #radioGroup { display: flex; margin: 0 auto; - width: 15%; } \ No newline at end of file diff --git a/samples/inputs/rating/custom/src/index.tsx b/samples/inputs/rating/custom/src/index.tsx index 8b128acbaa..2ddfd5cff2 100644 --- a/samples/inputs/rating/custom/src/index.tsx +++ b/samples/inputs/rating/custom/src/index.tsx @@ -4,7 +4,7 @@ import './index.css'; import { IgrRating, IgrRatingSymbol, IgrIcon, registerIconFromText } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; -const emptyHeart = ""; +const emptyHeart = ' '; const heartIcon = ' '; export default class RatingCustomSymbols extends React.Component { diff --git a/samples/inputs/rating/single-selection/src/index.tsx b/samples/inputs/rating/single-selection/src/index.tsx index 22c5779788..8eba75660d 100644 --- a/samples/inputs/rating/single-selection/src/index.tsx +++ b/samples/inputs/rating/single-selection/src/index.tsx @@ -15,24 +15,24 @@ export default class RatingSingleSelection extends React.Component {
-
😣
-
😣
+ 😣 + 😣
-
πŸ˜”
-
πŸ˜”
+ πŸ˜” + πŸ˜”
-
😐
-
😐
+ 😐 + 😐
-
πŸ™‚
-
πŸ™‚
+ πŸ™‚ + πŸ™‚
-
πŸ˜†
-
πŸ˜†
+ πŸ˜† + πŸ˜†
diff --git a/samples/inputs/select/styling/src/index.tsx b/samples/inputs/select/styling/src/index.tsx index 433448598e..408b882c34 100644 --- a/samples/inputs/select/styling/src/index.tsx +++ b/samples/inputs/select/styling/src/index.tsx @@ -34,21 +34,18 @@ export default function SelectGroup() { Germany - DE France - FR Spain - ES @@ -59,21 +56,18 @@ export default function SelectGroup() { USA - US Canada - CA Mexico - MX diff --git a/samples/inputs/textarea/resize/src/index.tsx b/samples/inputs/textarea/resize/src/index.tsx index 298e0161b6..2d8dcab1db 100644 --- a/samples/inputs/textarea/resize/src/index.tsx +++ b/samples/inputs/textarea/resize/src/index.tsx @@ -9,13 +9,13 @@ export default function TextAreaResize() { return (
-

This textarea does not resize and uses a scroll bar to show overflow text.

+ This textarea does not resize and uses a scroll bar to show overflow text.
-

This textarea lets the user resize vertically.

+ This textarea lets the user resize vertically.
-

This textarea shows all the user input at once. Overflow text wraps onto a new line and expands the text area.

+ This textarea shows all the user input at once. Overflow text wraps onto a new line and expands the text area.
); diff --git a/samples/inputs/textarea/slots/src/index.tsx b/samples/inputs/textarea/slots/src/index.tsx index 74961633dd..4d02390af5 100644 --- a/samples/inputs/textarea/slots/src/index.tsx +++ b/samples/inputs/textarea/slots/src/index.tsx @@ -15,10 +15,8 @@ export default function TextAreaSlots() { return (
- - - -

Give us a short description of what you liked/disliked

+ + Give us a short description of what you liked/disliked
); diff --git a/samples/inputs/textarea/styling/src/index.tsx b/samples/inputs/textarea/styling/src/index.tsx index c008c8e047..d0f68b7e05 100644 --- a/samples/inputs/textarea/styling/src/index.tsx +++ b/samples/inputs/textarea/styling/src/index.tsx @@ -15,10 +15,8 @@ export default function TextAreaStyling() { return (
- - - -

Provide a detailed description of the steps that led to the issue you experienced

+ + Provide a detailed description of the steps that led to the issue you experienced
); diff --git a/samples/layouts/accordion/customization/src/index.tsx b/samples/layouts/accordion/customization/src/index.tsx index 75a423073b..8e138630bb 100644 --- a/samples/layouts/accordion/customization/src/index.tsx +++ b/samples/layouts/accordion/customization/src/index.tsx @@ -64,14 +64,14 @@ export default class AccordionCustomization extends React.Component {
-

+ Categories {this.state.categories.some((c: Category) => c.checked) && ": "} {this.state.categories .filter((c: Category) => c.checked) .map((c: Category) => c.type) .join(", ")} -

+
{this.state.categories.map((c: Category) => { @@ -90,10 +90,10 @@ export default class AccordionCustomization extends React.Component { -

+ Cost: ${this.state.cost.lower} to $ {this.state.cost.upper} -

+ {
-

+ Rating{this.state.rating && ": "} {this.state.rating} -

+ {[1, 2, 3, 4].map((rating) => { @@ -135,9 +135,9 @@ export default class AccordionCustomization extends React.Component {
-

+ {this.state.time} -

+ Single Expand
- -

What has changed about subscription and pricing model?

- We have moved to a subscription-based pricing model for all our developer tools. This makes it easier - for you to manage your license subscriptions and allows us to provide a better level of service for you. We - updated our pricing and packages to provide you with flexible options and the best value. This includes Ignite UI - (formerly Ignite UI for JavaScript) which includes all of our JavaScript framework components for web development, - including: Angular, ASP.NET (Core and MVC), Blazor, JQuery, React and Web Components, as well as Infragistics Professional, - Infragistics Ultimate, our Ultimate UI products. We also offer multi-year subscriptions options with a built-in discount, - so you can see the value up front. With these updates we are confident that we are providing the best platforms and the best - price. -
- -

Who will the updated changes impact?

- The license updates will impact all new and current customers using Ignite UI, Infragistics Professional and - Infragistics Ultimate. Specifically, we have also made updates to our product and packaging for Ignite UI for JavaScript, - Ignite UI for Angular, Ignite UI for React and Ignite UI for Web components. For more information, please refer to this - blog: Announcement: Changes to Ignite UI Product & Packaging The pricing has been updated for all products and packages. - So, all new or additional licenses will be sold based on our new pricing and packages. All existing license agreements will - be honored and renewed based upon the current agreement. -
- -

What is the difference between your old model and your current subscription model for Ignite UI?

- For Ignite UI customers, we are moving away from NPM for licensed packages. The current NPM packages will be replaced with - packages that include a β€œTrial Version” watermark. Licensed packages for Ignite UI will be available from our cloud hosted ProGet - server. For more information, please refer to this article: Moving from Trial to Licensed Ignite UI NPM Packages -
- -

Common questions about renewal.

+ + Common questions about renewal. -

What happens if I don't renew my subscription?

+ What happens if I don't renew my subscription? Any unlicensed or trial versions of Ignite UI for Angular, React and Web Components will now include this watermark.
-

If I don't renew my subscription will I still have access to previous versions of Infragistics products?

+ If I don't renew my subscription will I still have access to previous versions of Infragistics products? Any version of Infragistics software which you have downloaded can continue to be used perpetually. Access to download any new or previous versions through our customer portal and package feeds will require maintaining an active subscription by continuing to renew it.
-

Will I be automatically charged for my renewal/ Can I be automatically charged for renewal?

+ Will I be automatically charged for my renewal/ Can I be automatically charged for renewal? Any new subscriptions purchased online, via our eCommerce system, will renew automatically. Subscription renewal can be canceled, at any time, before the next automatic renewal date. Subscriptions purchased directly from Infragistics or Infragistics' partners are subject to the renewal terms that were agreed upon as part of that purchase. @@ -71,25 +45,24 @@ export default function AccordionNestedScenario() {
-

I split my work across two computers. Can I install on both using my single-user license?

- The Infragistics Ultimate license is tied to the user, and not the computer. That means you're welcome to install and use Ignite UI, - Infragistics Professional, and Infragistics Ultimate on any computer you use. However, if we notice a large number of activations using the - same license, we may contact you to verify this behavior. + What has changed about subscription and pricing model? + We have moved to a subscription-based pricing model for all our developer tools. This makes it easier + for you to manage your license subscriptions and allows us to provide a better level of service for you. We + updated our pricing and packages to provide you with flexible options and the best value. This includes Ignite UI + (formerly Ignite UI for JavaScript) which includes all of our JavaScript framework components for web development, + including: Angular, ASP.NET (Core and MVC), Blazor, JQuery, React and Web Components, as well as Infragistics Professional, + Infragistics Ultimate, our Ultimate UI products. We also offer multi-year subscriptions options with a built-in discount, + so you can see the value up front. With these updates we are confident that we are providing the best platforms and the best + price.
-

I used up my trial for an earlier version of Infragistics Ultimate. Can I start a new trial when a major version is released?

- Yes! If you have tried a previous version in the past, and used up your 30-day trial, you can try the next major version for another 30 days! - You can do this in the following two ways: -
    -
  • If you have days remaining in your 30-day trial period for the current version (e.g., the - Version 15.1 Volume Release), use the Check for Update option inside the Platform Installer or - your account. You will be able to start a fresh trial for the next major version (e.g., 20.1 - Volume Release)
  • -
  • If you have used up the 30-day trial for the previous major version (e.g., the 19.2 Volume - Release), simply download and install Infragistics Ultimate from our website (This will also allow you - to start a new trial.)
  • -
+ Who will the updated changes impact? + The license updates will impact all new and current customers using Ignite UI, Infragistics Professional and + Infragistics Ultimate. Specifically, we have also made updates to our product and packaging for Ignite UI for JavaScript, + Ignite UI for Angular, Ignite UI for React and Ignite UI for Web components. For more information, please refer to this + blog: Announcement: Changes to Ignite UI Product & Packaging The pricing has been updated for all products and packages. + So, all new or additional licenses will be sold based on our new pricing and packages. All existing license agreements will + be honored and renewed based upon the current agreement.
diff --git a/samples/layouts/accordion/overview/src/index.tsx b/samples/layouts/accordion/overview/src/index.tsx index 222236d71d..cd982a3bd7 100644 --- a/samples/layouts/accordion/overview/src/index.tsx +++ b/samples/layouts/accordion/overview/src/index.tsx @@ -21,7 +21,7 @@ export default function AccordionOverview() {
-

What has changed about subscription and pricing model?

+ What has changed about subscription and pricing model? We have moved to a subscription-based pricing model for all our developer tools. This makes it easier for you to manage your license subscriptions and allows us to provide a better level of service for you. We updated our pricing and packages to provide you with flexible options and the best value. This includes Ignite UI @@ -32,7 +32,7 @@ export default function AccordionOverview() { price.
-

Who will the updated changes impact?

+ Who will the updated changes impact? The license updates will impact all new and current customers using Ignite UI, Infragistics Professional and Infragistics Ultimate. Specifically, we have also made updates to our product and packaging for Ignite UI for JavaScript, Ignite UI for Angular, Ignite UI for React and Ignite UI for Web components. For more information, please refer to this @@ -41,17 +41,17 @@ export default function AccordionOverview() { be honored and renewed based upon the current agreement.
-

What is the difference between your old model and your current subscription model for Ignite UI?

+ What is the difference between your old model and your current subscription model for Ignite UI? For Ignite UI customers, we are moving away from NPM for licensed packages. The current NPM packages will be replaced with packages that include a β€œTrial Version” watermark. Licensed packages for Ignite UI will be available from our cloud hosted ProGet server. For more information, please refer to this article: Moving from Trial to Licensed Ignite UI NPM Packages
-

What happens if I don't renew my subscription?

+ What happens if I don't renew my subscription? Any unlicensed or trial versions of Ignite UI for Angular, React and Web Components will now include this watermark.
-

If I don't renew my subscription will I still have access to previous versions of Infragistics products?

+ If I don't renew my subscription will I still have access to previous versions of Infragistics products? Any version of Infragistics software which you have downloaded can continue to be used perpetually. Access to download any new or previous versions through our customer portal and package feeds will require maintaining an active subscription by continuing to renew it. diff --git a/samples/layouts/card/horizontal/src/index.tsx b/samples/layouts/card/horizontal/src/index.tsx index b01380df50..7cab8d0f14 100644 --- a/samples/layouts/card/horizontal/src/index.tsx +++ b/samples/layouts/card/horizontal/src/index.tsx @@ -15,8 +15,8 @@ export default function CardHorizontal() {
-
Rozes
-
Under the Grave (2016)
+ Rozes + Under the Grave (2016)

As I have always said: I write what’s real and what’s true, diff --git a/samples/layouts/card/overview/src/index.tsx b/samples/layouts/card/overview/src/index.tsx index 22724a1e96..290b71ae79 100644 --- a/samples/layouts/card/overview/src/index.tsx +++ b/samples/layouts/card/overview/src/index.tsx @@ -34,8 +34,8 @@ export default function CardOverview() { -

New York City

-
City in New York
+ New York City + City in New York

diff --git a/samples/layouts/card/semi-horizontal/src/index.tsx b/samples/layouts/card/semi-horizontal/src/index.tsx index 3717f68b8f..0230d252a5 100644 --- a/samples/layouts/card/semi-horizontal/src/index.tsx +++ b/samples/layouts/card/semi-horizontal/src/index.tsx @@ -25,8 +25,8 @@ export default function CardSemiHorizontal() { src="https://dl.infragistics.com/x/img/music/singer_with_mic.jpg" slot="thumbnail" /> -

HERE
-
by Mellow D
+ HERE + by Mellow D diff --git a/samples/layouts/card/styling/src/index.tsx b/samples/layouts/card/styling/src/index.tsx index d3a5eb4e44..f543934898 100644 --- a/samples/layouts/card/styling/src/index.tsx +++ b/samples/layouts/card/styling/src/index.tsx @@ -36,8 +36,8 @@ export default function CardStyling() { -

Jane Doe

-
Professional Photographer
+ Jane Doe + Professional Photographer

diff --git a/samples/layouts/carousel/animations/src/index.tsx b/samples/layouts/carousel/animations/src/index.tsx index 00813f6f57..dff7e50a07 100644 --- a/samples/layouts/carousel/animations/src/index.tsx +++ b/samples/layouts/carousel/animations/src/index.tsx @@ -67,9 +67,9 @@ export default function CarouselComponents() {

-

+ Ignite UI for Angular -

+

@@ -99,9 +99,9 @@ export default function CarouselComponents() {

-

+ Ignite UI for Javascript -

+

@@ -131,9 +131,9 @@ export default function CarouselComponents() {

-

+ Ultimate UI for ASP.NET -

+

diff --git a/samples/layouts/expansion-panel/component-customization/src/index.css b/samples/layouts/expansion-panel/component-customization/src/index.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/samples/layouts/expansion-panel/component-customization/src/index.tsx b/samples/layouts/expansion-panel/component-customization/src/index.tsx index f502cae493..1130df3737 100644 --- a/samples/layouts/expansion-panel/component-customization/src/index.tsx +++ b/samples/layouts/expansion-panel/component-customization/src/index.tsx @@ -1,6 +1,5 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import './index.css'; import './ExpansionPanelCustomization.css'; import { IgrExpansionPanel, IgrButton } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; @@ -19,8 +18,8 @@ export default class ExpansionPanelComponentCustomization extends React.Componen return (

-

Golden Retriever

-

Medium-large gun dog

+ Golden Retriever + Medium-large gun dog
{this.state.expansionText}
The Golden Retriever is a medium-large gun dog that retrieves shot waterfowl, such as ducks diff --git a/samples/layouts/expansion-panel/properties-and-events/src/index.css b/samples/layouts/expansion-panel/properties-and-events/src/index.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/samples/layouts/expansion-panel/properties-and-events/src/index.tsx b/samples/layouts/expansion-panel/properties-and-events/src/index.tsx index e2088cd40c..60193a4051 100644 --- a/samples/layouts/expansion-panel/properties-and-events/src/index.tsx +++ b/samples/layouts/expansion-panel/properties-and-events/src/index.tsx @@ -1,6 +1,5 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import './index.css'; import './ExpansionPanelPropsAndEvents.css'; import { IgrExpansionPanel } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; @@ -19,8 +18,8 @@ export default class ExpansionPanelPropertiesAndEvents extends React.Component -

Golden Retriever

-

Medium-large gun dog

+ Golden Retriever + Medium-large gun dog
{this.state.expansionText}
The Golden Retriever is a medium-large gun dog that retrieves shot waterfowl, such as ducks and upland game birds, during hunting and shooting parties.[3] The name retriever refers to the breeds ability diff --git a/samples/layouts/expansion-panel/styling/src/index.css b/samples/layouts/expansion-panel/styling/src/index.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/samples/layouts/expansion-panel/styling/src/index.tsx b/samples/layouts/expansion-panel/styling/src/index.tsx index f5d96a9f18..c9b5b1af06 100644 --- a/samples/layouts/expansion-panel/styling/src/index.tsx +++ b/samples/layouts/expansion-panel/styling/src/index.tsx @@ -1,6 +1,5 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import './index.css'; import './ExpansionPanelStyling.css'; import { IgrExpansionPanel, IgrButton } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; @@ -15,8 +14,8 @@ export default class ExpansionPanelStyling extends React.Component { return (
-

Golden Retriever

-

Medium-large gun dog

+ Golden Retriever + Medium-large gun dog The Golden Retriever is a medium-large gun dog that retrieves shot waterfowl, such as ducks and upland game birds, during hunting and shooting parties.[3] The name retriever refers to the breeds ability diff --git a/samples/layouts/expansion-panel/usage/src/index.css b/samples/layouts/expansion-panel/usage/src/index.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/samples/layouts/expansion-panel/usage/src/index.tsx b/samples/layouts/expansion-panel/usage/src/index.tsx index a27c1c5734..7bb7280609 100644 --- a/samples/layouts/expansion-panel/usage/src/index.tsx +++ b/samples/layouts/expansion-panel/usage/src/index.tsx @@ -1,6 +1,5 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import './index.css'; import './ExpansionPanelUsage.css'; import { IgrExpansionPanel } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; @@ -15,8 +14,8 @@ export default class ExpansionPanelUsage extends React.Component { return (
-

Golden Retriever

-

Medium-large gun dog

+ Golden Retriever + Medium-large gun dog The Golden Retriever is a medium-large gun dog that retrieves shot waterfowl, such as ducks and upland game birds, during hunting and shooting parties.[3] The name retriever refers to the breeds ability to retrieve shot game undamaged due to their soft mouth. Golden retrievers have an instinctive love of water, and diff --git a/samples/layouts/tabs/alignment/src/index.css b/samples/layouts/tabs/alignment/src/index.css index 1f53b8aa05..0506830f9c 100644 --- a/samples/layouts/tabs/alignment/src/index.css +++ b/samples/layouts/tabs/alignment/src/index.css @@ -1,2 +1,6 @@ /* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-radio-group { + padding-block-end: 12px; +} \ No newline at end of file diff --git a/samples/layouts/tabs/overview/src/index.tsx b/samples/layouts/tabs/overview/src/index.tsx index 7cf38e5738..2895c9f154 100644 --- a/samples/layouts/tabs/overview/src/index.tsx +++ b/samples/layouts/tabs/overview/src/index.tsx @@ -22,15 +22,15 @@ export default class Overview extends React.Component {
- + Home tab panel - + Search tab panel - + Favorite tab panel diff --git a/samples/layouts/tabs/styling/src/index.tsx b/samples/layouts/tabs/styling/src/index.tsx index d184547eab..c08c2f2689 100644 --- a/samples/layouts/tabs/styling/src/index.tsx +++ b/samples/layouts/tabs/styling/src/index.tsx @@ -22,15 +22,15 @@ export default class TabsStyling extends React.Component {
- + Home tab panel - + Search tab panel - + Favorite tab panel diff --git a/samples/layouts/tile-manager/actions/src/index.tsx b/samples/layouts/tile-manager/actions/src/index.tsx index dc3924b892..ffc2f07cd5 100644 --- a/samples/layouts/tile-manager/actions/src/index.tsx +++ b/samples/layouts/tile-manager/actions/src/index.tsx @@ -98,15 +98,15 @@ export default class Actions extends React.Component {
-

Default Actions

+ Default Actions

This tile has default actions and title.

-

No Fullscreen Action

+ No Fullscreen Action

Fullscreen is disabled via property.

-

Custom Actions

+ Custom Actions

Replace the default actions with custom ones, and include extra actions when the tile is maximized.

@@ -117,7 +117,7 @@ export default class Actions extends React.Component {

Display only custom actions in the header.

-

Only title

+ Only title

Display only title in the header.

diff --git a/samples/layouts/tile-manager/overview/src/index.tsx b/samples/layouts/tile-manager/overview/src/index.tsx index a132a03d10..18fcb31e13 100644 --- a/samples/layouts/tile-manager/overview/src/index.tsx +++ b/samples/layouts/tile-manager/overview/src/index.tsx @@ -23,7 +23,7 @@ export default class Overview extends React.Component {
-

Order info

+ Order info @@ -83,7 +83,7 @@ export default class Overview extends React.Component {
-

Order Line Items

+ Order Line Items
@@ -93,7 +93,7 @@ export default class Overview extends React.Component {
-

Carnavon Tigers

+ Carnavon Tigers
@@ -113,7 +113,7 @@ export default class Overview extends React.Component {
-

Guarana Fantastica

+ Guarana Fantastica
@@ -133,7 +133,7 @@ export default class Overview extends React.Component {
-

Vegie-spread

+ Vegie-spread
@@ -153,7 +153,7 @@ export default class Overview extends React.Component {
-

Rhonbrau Klosterbier

+ Rhonbrau Klosterbier
@@ -168,13 +168,13 @@ export default class Overview extends React.Component {
-

Order Value

+ Order Value

$8.66K

-

Item quantity

+ Item quantity

4

From 92c7136f84988f76937248c329846748c1b473c5 Mon Sep 17 00:00:00 2001 From: Adrian Petrov Date: Mon, 8 Jun 2026 18:41:22 +0300 Subject: [PATCH 03/23] feat(): remove nested elements from button and radio samples --- .../inputs/button-group/alignment/src/index.tsx | 8 ++++---- .../inputs/button-group/selection/src/index.tsx | 6 +++--- samples/inputs/button-group/size/src/index.tsx | 6 +++--- samples/inputs/button-group/styling/src/index.tsx | 8 ++++---- samples/inputs/button/contained/src/index.tsx | 2 +- samples/inputs/button/download/src/index.tsx | 2 +- samples/inputs/button/fab/src/index.tsx | 2 +- samples/inputs/button/flat/src/index.tsx | 2 +- samples/inputs/button/outlined/src/index.tsx | 2 +- samples/inputs/button/overview/src/index.tsx | 6 +++--- samples/inputs/button/size/src/index.tsx | 14 +++++++------- samples/inputs/button/styling/src/index.tsx | 2 +- samples/inputs/radio/alignment/src/index.tsx | 8 ++++---- samples/inputs/radio/disabled/src/index.tsx | 8 ++++---- samples/inputs/radio/group/src/index.tsx | 8 ++++---- samples/inputs/radio/invalid/src/index.tsx | 4 ++-- samples/inputs/radio/label/src/index.tsx | 2 +- samples/inputs/radio/styling/src/index.tsx | 8 ++++---- 18 files changed, 49 insertions(+), 49 deletions(-) diff --git a/samples/inputs/button-group/alignment/src/index.tsx b/samples/inputs/button-group/alignment/src/index.tsx index b0721cb0d1..eca7498af0 100644 --- a/samples/inputs/button-group/alignment/src/index.tsx +++ b/samples/inputs/button-group/alignment/src/index.tsx @@ -15,19 +15,19 @@ export default function ButtonGroupAlignment() {
- Sofia + Sofia - London + London - New York + New York - Tokio + Tokyo diff --git a/samples/inputs/button-group/selection/src/index.tsx b/samples/inputs/button-group/selection/src/index.tsx index 90e51f5ecb..e27e89e466 100644 --- a/samples/inputs/button-group/selection/src/index.tsx +++ b/samples/inputs/button-group/selection/src/index.tsx @@ -50,13 +50,13 @@ export default function ButtonGroupSelectionSample() { - Single + Single - Single-Required + Single-Required - Multiple + Multiple
diff --git a/samples/inputs/button-group/size/src/index.tsx b/samples/inputs/button-group/size/src/index.tsx index 969af56221..06cbe8b3de 100644 --- a/samples/inputs/button-group/size/src/index.tsx +++ b/samples/inputs/button-group/size/src/index.tsx @@ -21,13 +21,13 @@ export default function ButtonGroupSize() {
- Small + Small - Medium + Medium - Large + Large
diff --git a/samples/inputs/button-group/styling/src/index.tsx b/samples/inputs/button-group/styling/src/index.tsx index 936cd0af33..0bf8d1f292 100644 --- a/samples/inputs/button-group/styling/src/index.tsx +++ b/samples/inputs/button-group/styling/src/index.tsx @@ -14,19 +14,19 @@ export default function ButtonGroupStyling() {
- Sofia + Sofia - London + London - New York + New York - Tokio + Tokyo diff --git a/samples/inputs/button/contained/src/index.tsx b/samples/inputs/button/contained/src/index.tsx index dafc24a3e8..3d20d80e57 100644 --- a/samples/inputs/button/contained/src/index.tsx +++ b/samples/inputs/button/contained/src/index.tsx @@ -13,7 +13,7 @@ export default class ButtonContained extends React.Component { public render(): JSX.Element { return (
- Contained + Contained
); } diff --git a/samples/inputs/button/download/src/index.tsx b/samples/inputs/button/download/src/index.tsx index 9139fe801e..96a6fd3b73 100644 --- a/samples/inputs/button/download/src/index.tsx +++ b/samples/inputs/button/download/src/index.tsx @@ -13,7 +13,7 @@ export default class ButtonDownload extends React.Component { public render(): JSX.Element { return (
- Download + Download
); } diff --git a/samples/inputs/button/fab/src/index.tsx b/samples/inputs/button/fab/src/index.tsx index 84e995d1f2..921df14c2c 100644 --- a/samples/inputs/button/fab/src/index.tsx +++ b/samples/inputs/button/fab/src/index.tsx @@ -15,7 +15,7 @@ export default class ButtonFab extends React.Component {
+ - Add + Add
); diff --git a/samples/inputs/button/flat/src/index.tsx b/samples/inputs/button/flat/src/index.tsx index 319341db76..d808fbef41 100644 --- a/samples/inputs/button/flat/src/index.tsx +++ b/samples/inputs/button/flat/src/index.tsx @@ -13,7 +13,7 @@ export default class ButtonFlat extends React.Component { public render(): JSX.Element { return (
- Flat + Flat
); } diff --git a/samples/inputs/button/outlined/src/index.tsx b/samples/inputs/button/outlined/src/index.tsx index 88a3b6cd3c..2bf99a463b 100644 --- a/samples/inputs/button/outlined/src/index.tsx +++ b/samples/inputs/button/outlined/src/index.tsx @@ -13,7 +13,7 @@ export default class ButtonOutlined extends React.Component { public render(): JSX.Element { return (
- Outlined + Outlined
); } diff --git a/samples/inputs/button/overview/src/index.tsx b/samples/inputs/button/overview/src/index.tsx index 7378171941..56d86a8ab6 100644 --- a/samples/inputs/button/overview/src/index.tsx +++ b/samples/inputs/button/overview/src/index.tsx @@ -14,9 +14,9 @@ export default class ButtonOverview extends React.Component { return (
- Flat - Contained - Outlined + Flat + Contained + Outlined
); diff --git a/samples/inputs/button/size/src/index.tsx b/samples/inputs/button/size/src/index.tsx index b0cad952dd..a454e6259c 100644 --- a/samples/inputs/button/size/src/index.tsx +++ b/samples/inputs/button/size/src/index.tsx @@ -17,21 +17,21 @@ export default class ButtonSize extends React.Component {
- Small + Small - Medium + Medium - Large + Large
- Flat - Contained - Outlined - Like + Flat + Contained + Outlined + Like
); diff --git a/samples/inputs/button/styling/src/index.tsx b/samples/inputs/button/styling/src/index.tsx index 56b4a6d516..3840167aa0 100644 --- a/samples/inputs/button/styling/src/index.tsx +++ b/samples/inputs/button/styling/src/index.tsx @@ -14,7 +14,7 @@ export default class ButtonStyling extends React.Component { public render(): JSX.Element { return (
- Contained + Contained
); } diff --git a/samples/inputs/radio/alignment/src/index.tsx b/samples/inputs/radio/alignment/src/index.tsx index 827b14d1c6..7263095a79 100644 --- a/samples/inputs/radio/alignment/src/index.tsx +++ b/samples/inputs/radio/alignment/src/index.tsx @@ -15,10 +15,10 @@ export default class RadioAlignment extends React.Component {
- Apple - Banana - Mango - Orange + Apple + Banana + Mango + Orange
diff --git a/samples/inputs/radio/disabled/src/index.tsx b/samples/inputs/radio/disabled/src/index.tsx index 99eda059ff..6aa302f281 100644 --- a/samples/inputs/radio/disabled/src/index.tsx +++ b/samples/inputs/radio/disabled/src/index.tsx @@ -15,10 +15,10 @@ export default class RadioDisabled extends React.Component {
- Banana - Mango - Apple - Orange + Banana + Mango + Apple + Orange
diff --git a/samples/inputs/radio/group/src/index.tsx b/samples/inputs/radio/group/src/index.tsx index 7f0964201b..23ec92f422 100644 --- a/samples/inputs/radio/group/src/index.tsx +++ b/samples/inputs/radio/group/src/index.tsx @@ -15,10 +15,10 @@ export default class RadioGroup extends React.Component {
- Apple - Banana - Mango - Orange + Apple + Banana + Mango + Orange
diff --git a/samples/inputs/radio/invalid/src/index.tsx b/samples/inputs/radio/invalid/src/index.tsx index 89f7b49b49..718d2bfe2c 100644 --- a/samples/inputs/radio/invalid/src/index.tsx +++ b/samples/inputs/radio/invalid/src/index.tsx @@ -7,14 +7,14 @@ import 'igniteui-webcomponents/themes/light/bootstrap.css'; export default class RadioInvalid extends React.Component { constructor(props: any) { - super(props); + super(props); } public render(): JSX.Element { return (
- Invalid + Invalid
); diff --git a/samples/inputs/radio/label/src/index.tsx b/samples/inputs/radio/label/src/index.tsx index aad11aae18..7c94a5902c 100644 --- a/samples/inputs/radio/label/src/index.tsx +++ b/samples/inputs/radio/label/src/index.tsx @@ -16,7 +16,7 @@ export default class RadioLabel extends React.Component {
- Apple + Apple
Orange {
- Apple - Banana - Mango - Orange + Apple + Banana + Mango + Orange
From ba931b0765da441769143b4bee4bbf0fbcd3bc28 Mon Sep 17 00:00:00 2001 From: dobromirts Date: Wed, 17 Jun 2026 11:45:33 +0300 Subject: [PATCH 04/23] fix: strip @infragistics/ scope from imports in generated code-viewer JSON --- browser/tasks/gulp-samples.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/browser/tasks/gulp-samples.js b/browser/tasks/gulp-samples.js index 2b4412d8a6..68a4d97605 100644 --- a/browser/tasks/gulp-samples.js +++ b/browser/tasks/gulp-samples.js @@ -277,6 +277,9 @@ function copySamples(cb) { code = code.replace(" var ", " let "); code = code.replace(", MarkerType_$type", ""); // auto fix TS lint issue in import statements: + // strip @infragistics/ scope from all imports (both 'from' and side-effect 'import') + // CI rewrites trial package names to licensed ones in source files before building. + code = code.replace(/@infragistics\/(igniteui)/g, '$1'); code = code.replace('from "igniteui-react";', "from 'igniteui-react';"); code = code.replace('from "igniteui-react-core";', "from 'igniteui-react-core';"); code = code.replace('from "igniteui-react-dashboards";', "from 'igniteui-react-dashboards';"); @@ -643,7 +646,8 @@ function updateCodeViewer(cb) { // Strip "../samples/{group}/{component}/{name}/" prefix so StackBlitz sdk.openProject() gets // project-relative paths like "src/index.tsx" instead of "../samples/.../src/index.tsx". var tsxPath = sample.SampleFilePath.replace(sample.SampleFolderPath + '/', ''); - var tsxItem = new CodeViewer(tsxPath, sample.SampleFileSourceCode, "tsx", "tsx", true); + var tsxSourceCode = sample.SampleFileSourceCode.replace(/@infragistics\/(igniteui)/g, '$1'); + var tsxItem = new CodeViewer(tsxPath, tsxSourceCode, "tsx", "tsx", true); contentItems.push(tsxItem); From d8ef9c5bacadc3fc521e741f0ff2d101e2f5353c Mon Sep 17 00:00:00 2001 From: Stamen Stoychev Date: Thu, 18 Jun 2026 15:08:51 +0300 Subject: [PATCH 05/23] Merge pull request #1084 from IgniteUI/sstoychev/switch-node-24 feat(cd): updating all actions to node 24 for consistency --- .github/workflows/build-sb.yml | 17 +++++------------ .../workflows/igniteui-react-examples-cd.yml | 8 ++++---- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-sb.yml b/.github/workflows/build-sb.yml index 399b03815a..9fba7ef1bd 100644 --- a/.github/workflows/build-sb.yml +++ b/.github/workflows/build-sb.yml @@ -5,8 +5,6 @@ name: Build Samples Browser # Controls when the action will run. Triggers the workflow on push or pull request # events but only for the master branch on: - push: - branches: [ master, vnext ] pull_request: branches: [ master, vnext ] @@ -16,20 +14,16 @@ jobs: # The type of runner that the job will run on runs-on: windows-latest - strategy: - matrix: - node-version: [22.x] - # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + - name: Use Node.js 24 + uses: actions/setup-node@v6 with: cache-dependency-path: browser/package-lock.json - node-version: ${{ matrix.node-version }} + node-version: '24.x' cache: 'npm' - name: Install dependencies @@ -39,5 +33,4 @@ jobs: - name: Build the samples browser to ensure it compiles run: cd browser && npm run build env: - NODE_OPTIONS: "--max_old_space_size=4096" - CI: false + CI: false \ No newline at end of file diff --git a/.github/workflows/igniteui-react-examples-cd.yml b/.github/workflows/igniteui-react-examples-cd.yml index 2d30f222ce..c1e10e8962 100644 --- a/.github/workflows/igniteui-react-examples-cd.yml +++ b/.github/workflows/igniteui-react-examples-cd.yml @@ -26,15 +26,15 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: ${{ env.BRANCH_REF }} token: ${{ secrets.GITHUB_TOKEN }} - name: Install Node - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: - node-version: '22.x' + node-version: '24.x' cache: 'npm' cache-dependency-path: browser/package-lock.json @@ -99,7 +99,7 @@ jobs: zip -r ${{ github.workspace }}/react-demos.zip ./ - name: Publish pipeline artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: react-demos-artifact path: react-demos.zip From 20fa2efd66ca92953b9a3b7d60fd558867af4d78 Mon Sep 17 00:00:00 2001 From: Dobromir Tsvetkov <46093564+dobromirts@users.noreply.github.com> Date: Thu, 18 Jun 2026 15:49:20 +0300 Subject: [PATCH 06/23] fix(*): remove @infragistics/ strip from copySamples (#1083) Co-authored-by: Stamen Stoychev --- browser/tasks/gulp-samples.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/browser/tasks/gulp-samples.js b/browser/tasks/gulp-samples.js index 68a4d97605..40eeea4a52 100644 --- a/browser/tasks/gulp-samples.js +++ b/browser/tasks/gulp-samples.js @@ -277,9 +277,6 @@ function copySamples(cb) { code = code.replace(" var ", " let "); code = code.replace(", MarkerType_$type", ""); // auto fix TS lint issue in import statements: - // strip @infragistics/ scope from all imports (both 'from' and side-effect 'import') - // CI rewrites trial package names to licensed ones in source files before building. - code = code.replace(/@infragistics\/(igniteui)/g, '$1'); code = code.replace('from "igniteui-react";', "from 'igniteui-react';"); code = code.replace('from "igniteui-react-core";', "from 'igniteui-react-core';"); code = code.replace('from "igniteui-react-dashboards";', "from 'igniteui-react-dashboards';"); From a9ec979fc647f063346859d03e67b855983bc89f Mon Sep 17 00:00:00 2001 From: Adrian Petrov Date: Mon, 22 Jun 2026 15:56:50 +0300 Subject: [PATCH 07/23] feat(): add badge outlined and dot samples + other sample improvements --- .../badge/dot/.devcontainer/devcontainer.json | 4 + samples/inputs/badge/dot/.eslintrc.js | 75 +++++++++++++++++++ samples/inputs/badge/dot/README.md | 56 ++++++++++++++ samples/inputs/badge/dot/index.html | 11 +++ samples/inputs/badge/dot/package.json | 42 +++++++++++ samples/inputs/badge/dot/sandbox.config.json | 5 ++ samples/inputs/badge/dot/src/index.css | 2 + samples/inputs/badge/dot/src/index.tsx | 22 ++++++ samples/inputs/badge/dot/tsconfig.json | 44 +++++++++++ samples/inputs/badge/dot/vite.config.js | 12 +++ samples/inputs/badge/outlined/index.html | 2 +- samples/inputs/badge/outlined/src/index.css | 27 ++++++- samples/inputs/badge/outlined/src/index.tsx | 29 +++---- .../overview/.devcontainer/devcontainer.json | 4 + samples/inputs/badge/overview/.eslintrc.js | 75 +++++++++++++++++++ samples/inputs/badge/overview/README.md | 56 ++++++++++++++ samples/inputs/badge/overview/index.html | 11 +++ samples/inputs/badge/overview/package.json | 42 +++++++++++ .../inputs/badge/overview/sandbox.config.json | 5 ++ samples/inputs/badge/overview/src/index.css | 13 ++++ samples/inputs/badge/overview/src/index.tsx | 24 ++++++ samples/inputs/badge/overview/tsconfig.json | 44 +++++++++++ samples/inputs/badge/overview/vite.config.js | 12 +++ 23 files changed, 602 insertions(+), 15 deletions(-) create mode 100644 samples/inputs/badge/dot/.devcontainer/devcontainer.json create mode 100644 samples/inputs/badge/dot/.eslintrc.js create mode 100644 samples/inputs/badge/dot/README.md create mode 100644 samples/inputs/badge/dot/index.html create mode 100644 samples/inputs/badge/dot/package.json create mode 100644 samples/inputs/badge/dot/sandbox.config.json create mode 100644 samples/inputs/badge/dot/src/index.css create mode 100644 samples/inputs/badge/dot/src/index.tsx create mode 100644 samples/inputs/badge/dot/tsconfig.json create mode 100644 samples/inputs/badge/dot/vite.config.js create mode 100644 samples/inputs/badge/overview/.devcontainer/devcontainer.json create mode 100644 samples/inputs/badge/overview/.eslintrc.js create mode 100644 samples/inputs/badge/overview/README.md create mode 100644 samples/inputs/badge/overview/index.html create mode 100644 samples/inputs/badge/overview/package.json create mode 100644 samples/inputs/badge/overview/sandbox.config.json create mode 100644 samples/inputs/badge/overview/src/index.css create mode 100644 samples/inputs/badge/overview/src/index.tsx create mode 100644 samples/inputs/badge/overview/tsconfig.json create mode 100644 samples/inputs/badge/overview/vite.config.js diff --git a/samples/inputs/badge/dot/.devcontainer/devcontainer.json b/samples/inputs/badge/dot/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..e0b8e9c925 --- /dev/null +++ b/samples/inputs/badge/dot/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} \ No newline at end of file diff --git a/samples/inputs/badge/dot/.eslintrc.js b/samples/inputs/badge/dot/.eslintrc.js new file mode 100644 index 0000000000..b45160a9ee --- /dev/null +++ b/samples/inputs/badge/dot/.eslintrc.js @@ -0,0 +1,75 @@ +// https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project +module.exports = { + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: { + jsx: true // Allows for the parsing of JSX + } + }, + settings: { + react: { + version: "999.999.999" // Tells eslint-plugin-react to automatically detect the version of React to use + } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react + "plugin:@typescript-eslint/recommended" // Uses the recommended rules from @typescript-eslint/eslint-plugin + ], + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + }, + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "rules": { + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + } + } + ] + }; \ No newline at end of file diff --git a/samples/inputs/badge/dot/README.md b/samples/inputs/badge/dot/README.md new file mode 100644 index 0000000000..abcf1679f9 --- /dev/null +++ b/samples/inputs/badge/dot/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Dot feature using [Badge](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + +
+ View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/badge/dot +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/badge/dot/index.html b/samples/inputs/badge/dot/index.html new file mode 100644 index 0000000000..4128ead680 --- /dev/null +++ b/samples/inputs/badge/dot/index.html @@ -0,0 +1,11 @@ + + + + Badge Dot + + + +
+ + + \ No newline at end of file diff --git a/samples/inputs/badge/dot/package.json b/samples/inputs/badge/dot/package.json new file mode 100644 index 0000000000..2846cb4238 --- /dev/null +++ b/samples/inputs/badge/dot/package.json @@ -0,0 +1,42 @@ +{ + "name": "react-badge-dot", + "description": "This project provides example of Badge Dot attribute using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/inputs/badge/dot/sandbox.config.json b/samples/inputs/badge/dot/sandbox.config.json new file mode 100644 index 0000000000..00acba0c10 --- /dev/null +++ b/samples/inputs/badge/dot/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} \ No newline at end of file diff --git a/samples/inputs/badge/dot/src/index.css b/samples/inputs/badge/dot/src/index.css new file mode 100644 index 0000000000..1f53b8aa05 --- /dev/null +++ b/samples/inputs/badge/dot/src/index.css @@ -0,0 +1,2 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file diff --git a/samples/inputs/badge/dot/src/index.tsx b/samples/inputs/badge/dot/src/index.tsx new file mode 100644 index 0000000000..45a07a4218 --- /dev/null +++ b/samples/inputs/badge/dot/src/index.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import { IgrBadge } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/bootstrap.css'; + +export default class BadgeDot extends React.Component { + constructor(props: any) { + super(props); + } + + public render(): JSX.Element { + return ( +
+ +
+ ); + } +} + +// rendering above class to the React DOM +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/badge/dot/tsconfig.json b/samples/inputs/badge/dot/tsconfig.json new file mode 100644 index 0000000000..e7db8a94f5 --- /dev/null +++ b/samples/inputs/badge/dot/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "**/odatajs-4.0.0.js", + "config-overrides.js" + ], + "include": [ + "src" + ] +} diff --git a/samples/inputs/badge/dot/vite.config.js b/samples/inputs/badge/dot/vite.config.js new file mode 100644 index 0000000000..1744dbc719 --- /dev/null +++ b/samples/inputs/badge/dot/vite.config.js @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + build: { + outDir: 'build' + }, + server: { + open: false + }, +}); \ No newline at end of file diff --git a/samples/inputs/badge/outlined/index.html b/samples/inputs/badge/outlined/index.html index 81c81c6570..7cfcd4df02 100644 --- a/samples/inputs/badge/outlined/index.html +++ b/samples/inputs/badge/outlined/index.html @@ -1,7 +1,7 @@ - BadgeOutlined + Badge Outlined diff --git a/samples/inputs/badge/outlined/src/index.css b/samples/inputs/badge/outlined/src/index.css index 1f53b8aa05..4d906a2229 100644 --- a/samples/inputs/badge/outlined/src/index.css +++ b/samples/inputs/badge/outlined/src/index.css @@ -1,2 +1,27 @@ /* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +.wrapper { + position: relative; + margin: 12px 0 0 12px; + display: flex; + padding: 8px; + background: var(--ig-surface-600); + border: 1px solid var(--ig-gray-600); + width: fit-content; + align-items: center; + border-radius: 4px; +} + +igc-badge { + --size: 14px; + + position: relative; + right: 8px; + top: -2px; +} + +span { + display: block; + font-weight: 600; +} diff --git a/samples/inputs/badge/outlined/src/index.tsx b/samples/inputs/badge/outlined/src/index.tsx index 6c93b91a6f..b109a6ea3d 100644 --- a/samples/inputs/badge/outlined/src/index.tsx +++ b/samples/inputs/badge/outlined/src/index.tsx @@ -1,24 +1,27 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; -import { IgrBadge } from 'igniteui-react'; +import { IgrBadge, IgrAvatar } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; export default class BadgeOutlined extends React.Component { + constructor(props: any) { + super(props); + } - constructor(props: any) { - super(props); - } - - public render(): JSX.Element { - return ( -
- -
- ); - } + public render(): JSX.Element { + return ( +
+
+ + +
+ Terrance Orta +
+ ); + } } // rendering above class to the React DOM const root = ReactDOM.createRoot(document.getElementById('root')); -root.render(); +root.render(); diff --git a/samples/inputs/badge/overview/.devcontainer/devcontainer.json b/samples/inputs/badge/overview/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..e0b8e9c925 --- /dev/null +++ b/samples/inputs/badge/overview/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} \ No newline at end of file diff --git a/samples/inputs/badge/overview/.eslintrc.js b/samples/inputs/badge/overview/.eslintrc.js new file mode 100644 index 0000000000..b45160a9ee --- /dev/null +++ b/samples/inputs/badge/overview/.eslintrc.js @@ -0,0 +1,75 @@ +// https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project +module.exports = { + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: { + jsx: true // Allows for the parsing of JSX + } + }, + settings: { + react: { + version: "999.999.999" // Tells eslint-plugin-react to automatically detect the version of React to use + } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react + "plugin:@typescript-eslint/recommended" // Uses the recommended rules from @typescript-eslint/eslint-plugin + ], + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + }, + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "rules": { + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + } + } + ] + }; \ No newline at end of file diff --git a/samples/inputs/badge/overview/README.md b/samples/inputs/badge/overview/README.md new file mode 100644 index 0000000000..1e46b763be --- /dev/null +++ b/samples/inputs/badge/overview/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Overview feature using [Badge](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/badge/overview +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/badge/overview/index.html b/samples/inputs/badge/overview/index.html new file mode 100644 index 0000000000..2c51e64511 --- /dev/null +++ b/samples/inputs/badge/overview/index.html @@ -0,0 +1,11 @@ + + + + Badge Overview + + + +
+ + + \ No newline at end of file diff --git a/samples/inputs/badge/overview/package.json b/samples/inputs/badge/overview/package.json new file mode 100644 index 0000000000..980934d407 --- /dev/null +++ b/samples/inputs/badge/overview/package.json @@ -0,0 +1,42 @@ +{ + "name": "react-badge-overview", + "description": "This project provides example of Badge Overview using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/inputs/badge/overview/sandbox.config.json b/samples/inputs/badge/overview/sandbox.config.json new file mode 100644 index 0000000000..00acba0c10 --- /dev/null +++ b/samples/inputs/badge/overview/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} \ No newline at end of file diff --git a/samples/inputs/badge/overview/src/index.css b/samples/inputs/badge/overview/src/index.css new file mode 100644 index 0000000000..2ea157a65b --- /dev/null +++ b/samples/inputs/badge/overview/src/index.css @@ -0,0 +1,13 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-badge { + --size: 18px; + + position: relative; + right: 10px; +} + +igc-avatar { + margin-top: 6px; +} diff --git a/samples/inputs/badge/overview/src/index.tsx b/samples/inputs/badge/overview/src/index.tsx new file mode 100644 index 0000000000..f44bcee40b --- /dev/null +++ b/samples/inputs/badge/overview/src/index.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import { IgrBadge, IgrAvatar } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/bootstrap.css'; + +export default class BadgeOverview extends React.Component { + constructor(props: any) { + super(props); + } + + public render(): JSX.Element { + return ( +
+ + +
+ ); + } +} + +// rendering above class to the React DOM +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/badge/overview/tsconfig.json b/samples/inputs/badge/overview/tsconfig.json new file mode 100644 index 0000000000..e7db8a94f5 --- /dev/null +++ b/samples/inputs/badge/overview/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "**/odatajs-4.0.0.js", + "config-overrides.js" + ], + "include": [ + "src" + ] +} diff --git a/samples/inputs/badge/overview/vite.config.js b/samples/inputs/badge/overview/vite.config.js new file mode 100644 index 0000000000..1744dbc719 --- /dev/null +++ b/samples/inputs/badge/overview/vite.config.js @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + build: { + outDir: 'build' + }, + server: { + open: false + }, +}); \ No newline at end of file From c9671c494e5bcc464d7cbd8a3cd7533b109b18c2 Mon Sep 17 00:00:00 2001 From: Simeon Simeonoff Date: Tue, 23 Jun 2026 14:26:04 +0300 Subject: [PATCH 08/23] refactor(badge): update outlined badge styles --- samples/inputs/badge/outlined/src/index.css | 26 ++++++++++++++------- samples/inputs/badge/outlined/src/index.tsx | 8 +++---- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/samples/inputs/badge/outlined/src/index.css b/samples/inputs/badge/outlined/src/index.css index 4d906a2229..151d518c9a 100644 --- a/samples/inputs/badge/outlined/src/index.css +++ b/samples/inputs/badge/outlined/src/index.css @@ -3,22 +3,30 @@ .wrapper { position: relative; - margin: 12px 0 0 12px; display: flex; - padding: 8px; - background: var(--ig-surface-600); - border: 1px solid var(--ig-gray-600); width: fit-content; align-items: center; - border-radius: 4px; + margin-block: 1rem; + gap: 0.5rem; + padding: 0.5rem; + border: 1px solid var(--ig-gray-300); + border-radius: .25rem; +} + +igc-avatar { + @container style(--ig-theme: indigo) { + --ig-size: var(--ig-size-large); + } + + anchor-name: --avatar; } igc-badge { - --size: 14px; + --size: .75rem; - position: relative; - right: 8px; - top: -2px; + position: absolute; + inset-block-end: anchor(--avatar bottom); + inset-inline-end: anchor(--avatar right); } span { diff --git a/samples/inputs/badge/outlined/src/index.tsx b/samples/inputs/badge/outlined/src/index.tsx index b109a6ea3d..4e78560b1d 100644 --- a/samples/inputs/badge/outlined/src/index.tsx +++ b/samples/inputs/badge/outlined/src/index.tsx @@ -11,13 +11,13 @@ export default class BadgeOutlined extends React.Component { public render(): JSX.Element { return ( -
-
+
+
-
+ Terrance Orta -
+ ); } } From 59f874f1060c2f1bbd294e7e32af5aa21977d110 Mon Sep 17 00:00:00 2001 From: Adrian Petrov Date: Wed, 1 Jul 2026 16:22:01 +0300 Subject: [PATCH 09/23] feat(pivot-grid): add styling sample --- .../styling/.devcontainer/devcontainer.json | 4 + samples/grids/pivot-grid/styling/.eslintrc.js | 78 ++ samples/grids/pivot-grid/styling/ReadMe.md | 56 + samples/grids/pivot-grid/styling/index.html | 12 + samples/grids/pivot-grid/styling/package.json | 49 + .../pivot-grid/styling/sandbox.config.json | 5 + .../pivot-grid/styling/src/PivotSalesData.ts | 1073 +++++++++++++++++ .../grids/pivot-grid/styling/src/index.css | 14 + .../grids/pivot-grid/styling/src/index.tsx | 94 ++ .../grids/pivot-grid/styling/tsconfig.json | 44 + .../grids/pivot-grid/styling/vite.config.js | 12 + 11 files changed, 1441 insertions(+) create mode 100644 samples/grids/pivot-grid/styling/.devcontainer/devcontainer.json create mode 100644 samples/grids/pivot-grid/styling/.eslintrc.js create mode 100644 samples/grids/pivot-grid/styling/ReadMe.md create mode 100644 samples/grids/pivot-grid/styling/index.html create mode 100644 samples/grids/pivot-grid/styling/package.json create mode 100644 samples/grids/pivot-grid/styling/sandbox.config.json create mode 100644 samples/grids/pivot-grid/styling/src/PivotSalesData.ts create mode 100644 samples/grids/pivot-grid/styling/src/index.css create mode 100644 samples/grids/pivot-grid/styling/src/index.tsx create mode 100644 samples/grids/pivot-grid/styling/tsconfig.json create mode 100644 samples/grids/pivot-grid/styling/vite.config.js diff --git a/samples/grids/pivot-grid/styling/.devcontainer/devcontainer.json b/samples/grids/pivot-grid/styling/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..e0b8e9c925 --- /dev/null +++ b/samples/grids/pivot-grid/styling/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} \ No newline at end of file diff --git a/samples/grids/pivot-grid/styling/.eslintrc.js b/samples/grids/pivot-grid/styling/.eslintrc.js new file mode 100644 index 0000000000..7168b71441 --- /dev/null +++ b/samples/grids/pivot-grid/styling/.eslintrc.js @@ -0,0 +1,78 @@ +// https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project +module.exports = { + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: { + jsx: true // Allows for the parsing of JSX + } + }, + settings: { + react: { + version: "999.999.999" // Tells eslint-plugin-react to automatically detect the version of React to use + } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react + "plugin:@typescript-eslint/recommended" // Uses the recommended rules from @typescript-eslint/eslint-plugin + ], + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + "default-case": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "no-mixed-spaces-and-tabs": 0, + "prefer-const": "off", + "prefer-rest-params": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + }, + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "rules": { + "default-case": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "no-var": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-mixed-spaces-and-tabs": 0, + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + } + } + ] + }; \ No newline at end of file diff --git a/samples/grids/pivot-grid/styling/ReadMe.md b/samples/grids/pivot-grid/styling/ReadMe.md new file mode 100644 index 0000000000..c51906ced9 --- /dev/null +++ b/samples/grids/pivot-grid/styling/ReadMe.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Styling feature using [Pivot Grid](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/grids/pivot-grid/styling +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/grids/pivot-grid/styling/index.html b/samples/grids/pivot-grid/styling/index.html new file mode 100644 index 0000000000..7ccd41dace --- /dev/null +++ b/samples/grids/pivot-grid/styling/index.html @@ -0,0 +1,12 @@ + + + + Sample | Ignite UI | React | infragistics + + + + +
+ + + \ No newline at end of file diff --git a/samples/grids/pivot-grid/styling/package.json b/samples/grids/pivot-grid/styling/package.json new file mode 100644 index 0000000000..9f9b1d879b --- /dev/null +++ b/samples/grids/pivot-grid/styling/package.json @@ -0,0 +1,49 @@ +{ + "name": "example-ignite-ui-react", + "description": "This project provides example of using Ignite UI for React components", + "author": "Infragistics", + "version": "1.4.0", + "license": "", + "homepage": ".", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest", + "lint": "eslint ./src/**/*.{ts,tsx}" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-react-grids": "19.7.0", + "igniteui-webcomponents": "^7.2.1", + "lit-html": "^3.2.0", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "eslint": "^8.33.0", + "eslint-config-react": "^1.1.7", + "eslint-plugin-react": "^7.20.0", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/grids/pivot-grid/styling/sandbox.config.json b/samples/grids/pivot-grid/styling/sandbox.config.json new file mode 100644 index 0000000000..07f53508eb --- /dev/null +++ b/samples/grids/pivot-grid/styling/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} \ No newline at end of file diff --git a/samples/grids/pivot-grid/styling/src/PivotSalesData.ts b/samples/grids/pivot-grid/styling/src/PivotSalesData.ts new file mode 100644 index 0000000000..601960bfd1 --- /dev/null +++ b/samples/grids/pivot-grid/styling/src/PivotSalesData.ts @@ -0,0 +1,1073 @@ +export class PivotSalesDataItem { + public constructor(init: Partial) { + Object.assign(this, init); + } + + public Country: string; + public Product: string; + public UnitsSold: number; + public ManufacturingPrice: number; + public SalePrice: number; + public GrossSales: number; + public Discounts: number; + public Sales: number; + public COGS: number; + public Profit: number; + public Date: string; + public MonthName: string; + public Year: number; +} + +export class PivotSalesData extends Array { + public constructor(items: Array | number = -1) { + if (Array.isArray(items)) { + super(...items); + } else { + const newItems = [ + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 501, ManufacturingPrice: 15, SalePrice: 23, GrossSales: 26440, Discounts: null, Sales: 26440, COGS: 16185, Profit: 11255, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1372, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 27440, Discounts: null, Sales: 27440, COGS: 16185, Profit: 11255, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2762, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 55240, Discounts: null, Sales: 55240, COGS: 13210, Profit: 42030, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1464, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 21960, Discounts: null, Sales: 21960, COGS: 21780, Profit: 180, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 719, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 10785, Discounts: null, Sales: 10785, COGS: 8880, Profit: 1905, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3576, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 53640, Discounts: null, Sales: 53640, COGS: 24700, Profit: 28940, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 4422, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1547700, Discounts: null, Sales: 1547700, COGS: 393380, Profit: 1154320, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3649, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 54735, Discounts: null, Sales: 54735, COGS: 9210, Profit: 45525, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4172, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 50064, Discounts: null, Sales: 50064, COGS: 7554, Profit: 42510, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3841, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 76820, Discounts: null, Sales: 76820, COGS: 18990, Profit: 57830, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3726, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 44712, Discounts: null, Sales: 44712, COGS: 4635, Profit: 40077, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2625, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 39375, Discounts: null, Sales: 39375, COGS: 24700, Profit: 14675, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1958, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 244750, Discounts: null, Sales: 244750, COGS: 319860, Profit: 75110, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 3271, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 981300, Discounts: null, Sales: 981300, COGS: 239500, Profit: 741800, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2091, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 14637, Discounts: null, Sales: 14637, COGS: 10730, Profit: 3907, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2825, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 42375, Discounts: null, Sales: 42375, COGS: 6150, Profit: 36225, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2513, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 50260, Discounts: null, Sales: 50260, COGS: 2920, Profit: 47340, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 883, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 13245, Discounts: null, Sales: 13245, COGS: 9740, Profit: 3505, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2087, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 25044, Discounts: null, Sales: 25044, COGS: 7554, Profit: 17490, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2563, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 897050, Discounts: null, Sales: 897050, COGS: 261560, Profit: 635490, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2846, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 34152, Discounts: null, Sales: 34152, COGS: 1101, Profit: 33051, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 997, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 6979, Discounts: null, Sales: 6979, COGS: 4415, Profit: 2564, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2290, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 34350, Discounts: null, Sales: 34350, COGS: 24720, Profit: 9630, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2133, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 14931, Discounts: null, Sales: 14931, COGS: 5715, Profit: 9216, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3617, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 72340, Discounts: null, Sales: 72340, COGS: 18170, Profit: 54170, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1266, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 443100, Discounts: null, Sales: 443100, COGS: 393380, Profit: 49720, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 894, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 6258, Discounts: null, Sales: 6258, COGS: 7465, Profit: 1207, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 2725, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 340625, Discounts: null, Sales: 340625, COGS: 216480, Profit: 124145, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3061, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 36732, Discounts: null, Sales: 36732, COGS: 6483, Profit: 30249, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3958, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1385300, Discounts: null, Sales: 1385300, COGS: 261560, Profit: 1123740, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3920, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 47040, Discounts: null, Sales: 47040, COGS: 4635, Profit: 42405, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3381, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 422625, Discounts: null, Sales: 422625, COGS: 338520, Profit: 84105, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4307, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 1292100, Discounts: null, Sales: 1292100, COGS: 500250, Profit: 791850, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 878, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 10536, Discounts: null, Sales: 10536, COGS: 8514, Profit: 2022, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 496, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 7440, Discounts: null, Sales: 7440, COGS: 21780, Profit: 14340, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3367, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 50505, Discounts: null, Sales: 50505, COGS: 8880, Profit: 41625, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2055, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 616500, Discounts: null, Sales: 616500, COGS: 537750, Profit: 78750, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4041, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 80820, Discounts: null, Sales: 80820, COGS: 18170, Profit: 62650, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 3237, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1132950, Discounts: null, Sales: 1132950, COGS: 715000, Profit: 417950, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 630, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 7560, Discounts: null, Sales: 7560, COGS: 5859, Profit: 1701, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4210, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 526250, Discounts: null, Sales: 526250, COGS: 506340, Profit: 19910, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1127, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 22540, Discounts: null, Sales: 22540, COGS: 18990, Profit: 3550, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3438, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 24066, Discounts: null, Sales: 24066, COGS: 8430, Profit: 15636, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2015, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 24180, Discounts: null, Sales: 24180, COGS: 6423, Profit: 17757, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2534, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 17738, Discounts: null, Sales: 17738, COGS: 5715, Profit: 12023, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1384, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 20760, Discounts: null, Sales: 20760, COGS: 6150, Profit: 14610, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3561, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 24927, Discounts: 276.15, Sales: 24650.85, COGS: 19725, Profit: 4925.85, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1823, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 27345, Discounts: 344.4, Sales: 27000.6, COGS: 22960, Profit: 4040.6, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2795, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 19565, Discounts: 72.1, Sales: 19492.9, COGS: 5150, Profit: 14342.9, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 457, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 3199, Discounts: 44.73, Sales: 3154.27, COGS: 3195, Profit: 40.73, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3785, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 26495, Discounts: 92.82, Sales: 26402.18, COGS: 6630, Profit: 19772.18, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 748, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 8976, Discounts: 222.96, Sales: 8753.04, COGS: 5574, Profit: 3179.04, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1021, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 357350, Discounts: 4235, Sales: 353115, COGS: 314600, Profit: 38515, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2076, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 14532, Discounts: 177.03, Sales: 14354.97, COGS: 12645, Profit: 1709.97, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 4316, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 51792, Discounts: 173.4, Sales: 51618.6, COGS: 4335, Profit: 47283.6, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 4174, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 50088, Discounts: 320.52, Sales: 49767.48, COGS: 8013, Profit: 41754.48, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3736, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1307600, Discounts: 4889.5, Sales: 1302710.5, COGS: 363220, Profit: 939490.5, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1914, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 669900, Discounts: 7542.5, Sales: 662357.5, COGS: 560300, Profit: 102057.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2742, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 41130, Discounts: 332.1, Sales: 40797.9, COGS: 22140, Profit: 18657.9, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1499, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 449700, Discounts: 6903, Sales: 442797, COGS: 575250, Profit: 132453, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3772, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 75440, Discounts: 275.1, Sales: 75164.9, COGS: 13755, Profit: 61409.9, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1112, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 7784, Discounts: 128.1, Sales: 7655.9, COGS: 9150, Profit: 1494.1, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2368, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 35520, Discounts: 227.1, Sales: 35292.9, COGS: 15140, Profit: 20152.9, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1586, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 11102, Discounts: 314.48, Sales: 10787.52, COGS: 22462.5, Profit: 11674.98, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3386, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 423250, Discounts: 908.75, Sales: 422341.25, COGS: 87240, Profit: 335101.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 852, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 106500, Discounts: 983.75, Sales: 105516.25, COGS: 94440, Profit: 11076.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2783, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 347875, Discounts: 2278.75, Sales: 345596.25, COGS: 218760, Profit: 126836.25, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2684, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 40260, Discounts: 112.05, Sales: 40147.95, COGS: 7470, Profit: 32677.95, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4083, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1224900, Discounts: 8715, Sales: 1216185, COGS: 726250, Profit: 489935, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2816, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 985600, Discounts: 7542.5, Sales: 978057.5, COGS: 560300, Profit: 417757.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 4294, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 85880, Discounts: 772.8, Sales: 85107.2, COGS: 38640, Profit: 46467.2, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2856, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 19992, Discounts: 25.34, Sales: 19966.66, COGS: 1810, Profit: 18156.66, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1407, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 175875, Discounts: 1153.75, Sales: 174721.25, COGS: 110760, Profit: 63961.25, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1265, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 8855, Discounts: 18.41, Sales: 8836.59, COGS: 1315, Profit: 7521.59, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3892, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1362200, Discounts: 3302.25, Sales: 1358897.75, COGS: 245310, Profit: 1113587.75, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 3068, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 383500, Discounts: 908.75, Sales: 382591.25, COGS: 87240, Profit: 295351.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2181, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 272625, Discounts: 983.75, Sales: 271641.25, COGS: 94440, Profit: 177201.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1356, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 406800, Discounts: 2958, Sales: 403842, COGS: 246500, Profit: 177201.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1814, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 634900, Discounts: 4889.5, Sales: 630010.5, COGS: 363220, Profit: 266790.5, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1495, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 186875, Discounts: 2180, Sales: 184695, COGS: 209280, Profit: 24585, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1463, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 182875, Discounts: 1856.25, Sales: 181018.75, COGS: 89100, Profit: 91918.75, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 215, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 2580, Discounts: 310.8, Sales: 2269.2, COGS: 3885, Profit: 1615.8, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 566, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 198100, Discounts: 19964, Sales: 178136, COGS: 741520, Profit: 563384, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 3255, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 39060, Discounts: 274.08, Sales: 38785.92, COGS: 3426, Profit: 35359.92, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 772, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 15440, Discounts: 626.4, Sales: 14813.6, COGS: 15660, Profit: 846.4, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1135, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 13620, Discounts: 165.6, Sales: 13454.4, COGS: 2070, Profit: 11384.4, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1193, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 17895, Discounts: 708.9, Sales: 17186.1, COGS: 23630, Profit: 6443.9, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2530, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 759000, Discounts: 5508, Sales: 753492, COGS: 229500, Profit: 523992, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3451, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1035300, Discounts: 10368, Sales: 1024932, COGS: 432000, Profit: 592932, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3059, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 36708, Discounts: 274.08, Sales: 36433.92, COGS: 3426, Profit: 33007.92, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3957, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 494625, Discounts: 1655, Sales: 492970, COGS: 79440, Profit: 413530, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3444, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 41328, Discounts: 310.8, Sales: 41017.2, COGS: 3885, Profit: 37132.2, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3154, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 946200, Discounts: 11496, Sales: 934704, COGS: 479000, Profit: 455704, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4108, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1437800, Discounts: 19964, Sales: 1417836, COGS: 741520, Profit: 676316, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3760, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 470000, Discounts: 6822.5, Sales: 463177.5, COGS: 327480, Profit: 135697.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2334, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 28008, Discounts: 253.2, Sales: 27754.8, COGS: 3165, Profit: 24589.8, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 580, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 6960, Discounts: 260.16, Sales: 6699.84, COGS: 3252, Profit: 3447.84, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2610, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 52200, Discounts: 626.4, Sales: 51573.6, COGS: 15660, Profit: 35913.6, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 1459, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 510650, Discounts: 20139, Sales: 490511, COGS: 748020, Profit: 257509, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3774, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 45288, Discounts: 253.2, Sales: 45034.8, COGS: 3165, Profit: 41869.8, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2572, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 30864, Discounts: 260.16, Sales: 30603.84, COGS: 3252, Profit: 27351.84, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 320, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 40000, Discounts: 1655, Sales: 38345, COGS: 79440, Profit: 41095, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3275, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1146250, Discounts: 20139, Sales: 1126111, COGS: 748020, Profit: 378091, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3582, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 447750, Discounts: 6822.5, Sales: 440927.5, COGS: 327480, Profit: 113447.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4056, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 1216800, Discounts: 1554, Sales: 1215246, COGS: 64750, Profit: 1150496, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2144, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 643200, Discounts: 6606, Sales: 636594, COGS: 275250, Profit: 361344, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3502, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 437750, Discounts: 5690, Sales: 432060, COGS: 273120, Profit: 158940, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 679, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 13580, Discounts: 494.4, Sales: 13085.6, COGS: 12360, Profit: 725.6, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2351, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 47020, Discounts: 376.4, Sales: 46643.6, COGS: 9410, Profit: 37233.6, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2043, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 612900, Discounts: 11496, Sales: 601404, COGS: 479000, Profit: 122404, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 3565, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 445625, Discounts: 15913.13, Sales: 429711.88, COGS: 509220, Profit: 79508.13, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1401, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 28020, Discounts: 1548, Sales: 26472, COGS: 25800, Profit: 672, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2077, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 623100, Discounts: 6201, Sales: 616899, COGS: 172250, Profit: 444649, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 3643, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 43716, Discounts: 700.92, Sales: 43015.08, COGS: 5841, Profit: 37174.08, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2960, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 20720, Discounts: 411.18, Sales: 20308.82, COGS: 9790, Profit: 10518.82, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1201, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 14412, Discounts: 684.36, Sales: 13727.64, COGS: 5703, Profit: 8024.64, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 2321, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 16247, Discounts: 114.24, Sales: 16132.76, COGS: 2720, Profit: 13412.76, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3972, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 496500, Discounts: 4826.25, Sales: 491673.75, COGS: 154440, Profit: 337233.75, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3878, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 484750, Discounts: 6397.5, Sales: 478352.5, COGS: 204720, Profit: 273632.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2278, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 683400, Discounts: 21910.5, Sales: 661489.5, COGS: 608625, Profit: 52864.5, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1075, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 134375, Discounts: 6652.5, Sales: 127722.5, COGS: 212880, Profit: 85157.5, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 4050, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 48600, Discounts: 684.36, Sales: 47915.64, COGS: 5703, Profit: 42212.64, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3035, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 910500, Discounts: 6201, Sales: 904299, COGS: 172250, Profit: 732049, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3636, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 454500, Discounts: 5887.5, Sales: 448612.5, COGS: 188400, Profit: 260212.5, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1379, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 16548, Discounts: 493.02, Sales: 16054.98, COGS: 4108.5, Profit: 11946.48, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4492, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 561500, Discounts: 7533.75, Sales: 553966.25, COGS: 241080, Profit: 312886.25, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1744, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 218000, Discounts: 4826.25, Sales: 213173.75, COGS: 154440, Profit: 58733.75, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2341, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 292625, Discounts: 6397.5, Sales: 286227.5, COGS: 204720, Profit: 81507.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3835, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 479375, Discounts: 7533.75, Sales: 471841.25, COGS: 241080, Profit: 230761.25, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1161, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 348300, Discounts: 25596, Sales: 322704, COGS: 711000, Profit: 388296, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 876, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 10512, Discounts: 689.76, Sales: 9822.24, COGS: 5748, Profit: 4074.24, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1705, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 213125, Discounts: 5887.5, Sales: 207237.5, COGS: 188400, Profit: 18837.5, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1805, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 541500, Discounts: 16866, Sales: 524634, COGS: 468500, Profit: 56134, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 389, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 136150, Discounts: 17241, Sales: 118909, COGS: 426920, Profit: 308011, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1459, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 29180, Discounts: 498.6, Sales: 28681.4, COGS: 8310, Profit: 20371.4, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 4236, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 84720, Discounts: 2310.3, Sales: 82409.7, COGS: 38505, Profit: 43904.7, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3627, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 43524, Discounts: 892.44, Sales: 42631.56, COGS: 7437, Profit: 35194.56, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1756, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 26340, Discounts: 1218.6, Sales: 25121.4, COGS: 20310, Profit: 4811.4, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 307, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 4605, Discounts: 1218.6, Sales: 3386.4, COGS: 20310, Profit: 16923.6, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1222, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 366600, Discounts: 24252, Sales: 342348, COGS: 505250, Profit: 162902, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 489, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 171150, Discounts: 3836, Sales: 167314, COGS: 71240, Profit: 96074, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4133, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 61995, Discounts: 1180.2, Sales: 60814.8, COGS: 19670, Profit: 41144.8, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2743, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 822900, Discounts: 22308, Sales: 800592, COGS: 464750, Profit: 335842, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 4460, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1338000, Discounts: 24252, Sales: 1313748, COGS: 505250, Profit: 808498, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1232, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 154000, Discounts: 5690, Sales: 148310, COGS: 136560, Profit: 11750, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2586, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 18102, Discounts: 1190.28, Sales: 16911.72, COGS: 21255, Profit: 4343.28, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1332, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 166500, Discounts: 3975, Sales: 162525, COGS: 95400, Profit: 67125, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4487, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1346100, Discounts: 16974, Sales: 1329126, COGS: 353625, Profit: 975501, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3862, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1158600, Discounts: 35016, Sales: 1123584, COGS: 729500, Profit: 394084, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1765, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 617750, Discounts: 48300, Sales: 569450, COGS: 897000, Profit: 327550, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3533, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 441625, Discounts: 14940, Sales: 426685, COGS: 358560, Profit: 68125, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2016, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 30240, Discounts: 130.8, Sales: 30109.2, COGS: 2180, Profit: 27929.2, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2938, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 58760, Discounts: 1659.2, Sales: 57100.8, COGS: 20740, Profit: 36360.8, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3352, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 67040, Discounts: 844.8, Sales: 66195.2, COGS: 10560, Profit: 55635.2, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2430, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 850500, Discounts: 3836, Sales: 846664, COGS: 71240, Profit: 775424, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 535, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 66875, Discounts: 5690, Sales: 61185, COGS: 136560, Profit: 75375, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1523, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 18276, Discounts: 703.2, Sales: 17572.8, COGS: 4395, Profit: 13177.8, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1782, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 623700, Discounts: 30478, Sales: 593222, COGS: 566020, Profit: 27202, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 347, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 4164, Discounts: 415.68, Sales: 3748.32, COGS: 2598, Profit: 1150.32, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3509, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1228150, Discounts: 30478, Sales: 1197672, COGS: 566020, Profit: 631652, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2943, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1030050, Discounts: 26110, Sales: 1003940, COGS: 484900, Profit: 519040, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 4037, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 504625, Discounts: 5370, Sales: 499255, COGS: 128880, Profit: 370375, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4146, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1451100, Discounts: 26698, Sales: 1424402, COGS: 495820, Profit: 928582, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 725, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 5075, Discounts: 480.2, Sales: 4594.8, COGS: 6860, Profit: 2265.2, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2325, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 16275, Discounts: 941.15, Sales: 15333.85, COGS: 13445, Profit: 1888.85, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 675, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 8100, Discounts: 1458.6, Sales: 6641.4, COGS: 7293, Profit: 651.6, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2990, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 35880, Discounts: 1458.6, Sales: 34421.4, COGS: 7293, Profit: 27128.4, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1072, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 7504, Discounts: 941.15, Sales: 6562.85, COGS: 13445, Profit: 6882.15, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1048, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 7336, Discounts: 589.05, Sales: 6746.95, COGS: 8415, Profit: 1668.05, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 469, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 5628, Discounts: 673.8, Sales: 4954.2, COGS: 3369, Profit: 1585.2, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 4240, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 50880, Discounts: 1119, Sales: 49761, COGS: 5595, Profit: 44166, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1976, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 23712, Discounts: 669.6, Sales: 23042.4, COGS: 3348, Profit: 19694.4, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1984, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 39680, Discounts: 1563, Sales: 38117, COGS: 15630, Profit: 22487, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 480, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 144000, Discounts: 14865, Sales: 129135, COGS: 247750, Profit: 118615, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1205, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 18075, Discounts: 2093.25, Sales: 15981.75, COGS: 27910, Profit: 11928.25, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2480, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 17360, Discounts: 199.5, Sales: 17160.5, COGS: 2850, Profit: 14310.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 2926, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 20482, Discounts: 870.45, Sales: 19611.55, COGS: 12435, Profit: 7176.55, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3210, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 1123500, Discounts: 24228.75, Sales: 1099271.25, COGS: 359970, Profit: 739301.25, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 3221, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 402625, Discounts: 22668.75, Sales: 379956.25, COGS: 435240, Profit: 55283.75, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 1127, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 13524, Discounts: 1405.2, Sales: 12118.8, COGS: 7026, Profit: 5092.8, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1610, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 32200, Discounts: 1303, Sales: 30897, COGS: 13030, Profit: 17867, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4100, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 512500, Discounts: 18700, Sales: 493800, COGS: 359040, Profit: 134760, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1012, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 126500, Discounts: 14906.25, Sales: 111593.75, COGS: 286200, Profit: 174606.25, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3337, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1001100, Discounts: 24105, Sales: 976995, COGS: 401750, Profit: 575245, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3955, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 27685, Discounts: 814.45, Sales: 26870.55, COGS: 11635, Profit: 15235.55, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4347, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1304100, Discounts: 14865, Sales: 1289235, COGS: 247750, Profit: 1041485, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1548, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 541800, Discounts: 10535, Sales: 531265, COGS: 156520, Profit: 374745, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2153, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 32295, Discounts: 1965, Sales: 30330, COGS: 26200, Profit: 4130, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4126, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 515750, Discounts: 5381.25, Sales: 510368.75, COGS: 103320, Profit: 407048.75, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3376, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 67520, Discounts: 2663, Sales: 64857, COGS: 26630, Profit: 38227, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2244, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 33660, Discounts: 416.25, Sales: 33243.75, COGS: 5550, Profit: 27693.75, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 1360, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 20400, Discounts: 2145.75, Sales: 18254.25, COGS: 28610, Profit: 10355.75, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 279, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 34875, Discounts: 5043.75, Sales: 29831.25, COGS: 96840, Profit: 67008.75, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2521, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 882350, Discounts: 10535, Sales: 871815, COGS: 156520, Profit: 715295, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2433, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 48660, Discounts: 2832, Sales: 45828, COGS: 28320, Profit: 17508, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1738, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 34760, Discounts: 1579, Sales: 33181, COGS: 15790, Profit: 17391, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1106, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 138250, Discounts: 5381.25, Sales: 132868.75, COGS: 103320, Profit: 29548.75, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 213, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 63900, Discounts: 18750, Sales: 45150, COGS: 312500, Profit: 267350, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2929, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 58580, Discounts: 2663, Sales: 55917, COGS: 26630, Profit: 29287, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2389, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 16723, Discounts: 199.5, Sales: 16523.5, COGS: 2850, Profit: 13673.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3086, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 21602, Discounts: 870.45, Sales: 20731.55, COGS: 12435, Profit: 8296.55, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 745, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 260750, Discounts: 23625, Sales: 237125, COGS: 351000, Profit: 113875, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1266, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 443100, Discounts: 9660, Sales: 433440, COGS: 143520, Profit: 289920, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4287, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 1286100, Discounts: 18750, Sales: 1267350, COGS: 312500, Profit: 954850, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3193, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 47895, Discounts: 3420.9, Sales: 44474.1, COGS: 38010, Profit: 6464.1, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1967, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 39340, Discounts: 1341, Sales: 37999, COGS: 11175, Profit: 26824, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 631, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 9465, Discounts: 2559.6, Sales: 6905.4, COGS: 28440, Profit: 21534.6, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3469, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 41628, Discounts: 404.64, Sales: 41223.36, COGS: 1686, Profit: 39537.36, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 3215, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 48225, Discounts: 1827, Sales: 46398, COGS: 20300, Profit: 26098, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1959, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 685650, Discounts: 20580, Sales: 665070, COGS: 254800, Profit: 410270, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2181, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 763350, Discounts: 30660, Sales: 732690, COGS: 379600, Profit: 353090, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2205, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 26460, Discounts: 1960.56, Sales: 24499.44, COGS: 8169, Profit: 16330.44, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1890, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 661500, Discounts: 31416, Sales: 630084, COGS: 388960, Profit: 241124, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2417, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 302125, Discounts: 7140, Sales: 294985, COGS: 114240, Profit: 180745, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1158, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 144750, Discounts: 20662.5, Sales: 124087.5, COGS: 330600, Profit: 206512.5, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 803, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 12045, Discounts: 1377, Sales: 10668, COGS: 15300, Profit: 4632, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3705, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1296750, Discounts: 31416, Sales: 1265334, COGS: 388960, Profit: 876374, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 589, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 4123, Discounts: 629.16, Sales: 3493.84, COGS: 7490, Profit: 3996.16, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3999, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 59985, Discounts: 2559.6, Sales: 57425.4, COGS: 28440, Profit: 28985.4, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 4256, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 29792, Discounts: 629.16, Sales: 29162.84, COGS: 7490, Profit: 21672.84, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2160, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 270000, Discounts: 14906.25, Sales: 255093.75, COGS: 238500, Profit: 16593.75, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 466, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 163100, Discounts: 35259, Sales: 127841, COGS: 436540, Profit: 308699, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1478, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 22170, Discounts: 1978.2, Sales: 20191.8, COGS: 21980, Profit: 1788.2, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3798, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 56970, Discounts: 1568.7, Sales: 55401.3, COGS: 17430, Profit: 37971.3, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 447, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 6705, Discounts: 1037.7, Sales: 5667.3, COGS: 11530, Profit: 5862.7, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 745, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 14900, Discounts: 1201.2, Sales: 13698.8, COGS: 10010, Profit: 3688.8, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 1732, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 12124, Discounts: 559.86, Sales: 11564.14, COGS: 6665, Profit: 4899.14, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1759, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 26385, Discounts: 1037.7, Sales: 25347.3, COGS: 11530, Profit: 13817.3, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 338, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 4056, Discounts: 610.68, Sales: 3445.32, COGS: 2181, Profit: 1264.32, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 3911, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 46932, Discounts: 1582.56, Sales: 45349.44, COGS: 5652, Profit: 39697.44, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 4473, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 53676, Discounts: 1965.6, Sales: 51710.4, COGS: 7020, Profit: 44690.4, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 383, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 4596, Discounts: 1967.28, Sales: 2628.72, COGS: 7026, Profit: 4397.28, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1062, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 15930, Discounts: 1325.1, Sales: 14604.9, COGS: 12620, Profit: 1984.9, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 4083, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 28581, Discounts: 556.15, Sales: 28024.85, COGS: 5675, Profit: 22349.85, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3974, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 27818, Discounts: 268.03, Sales: 27549.97, COGS: 2735, Profit: 24814.97, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3723, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 26061, Discounts: 775.18, Sales: 25285.82, COGS: 7910, Profit: 17375.82, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2435, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 29220, Discounts: 1460.34, Sales: 27759.66, COGS: 5215.5, Profit: 22544.16, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1763, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 12341, Discounts: 775.18, Sales: 11565.82, COGS: 7910, Profit: 3655.82, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 4473, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 31311, Discounts: 556.15, Sales: 30754.85, COGS: 5675, Profit: 25079.85, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1246, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 436100, Discounts: 43144.5, Sales: 392955.5, COGS: 457860, Profit: 64904.5, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1615, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 484500, Discounts: 9408, Sales: 475092, COGS: 112000, Profit: 363092, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 749, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 224700, Discounts: 45801, Sales: 178899, COGS: 545250, Profit: 366351, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1318, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 26360, Discounts: 2766.4, Sales: 23593.6, COGS: 19760, Profit: 3833.6, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 2882, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 864600, Discounts: 45801, Sales: 818799, COGS: 545250, Profit: 273549, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2484, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 745200, Discounts: 35742, Sales: 709458, COGS: 425500, Profit: 283958, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3169, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 950700, Discounts: 9408, Sales: 941292, COGS: 112000, Profit: 829292, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4080, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 510000, Discounts: 30738.75, Sales: 479261.25, COGS: 421560, Profit: 57701.25, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3943, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 59145, Discounts: 2206.05, Sales: 56938.95, COGS: 21010, Profit: 35928.95, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 253, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 5060, Discounts: 2149, Sales: 2911, COGS: 15350, Profit: 12439, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 799, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 239700, Discounts: 34839, Sales: 204861, COGS: 414750, Profit: 209889, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3942, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 78840, Discounts: 852.6, Sales: 77987.4, COGS: 6090, Profit: 71897.4, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2498, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 312250, Discounts: 18261.25, Sales: 293988.75, COGS: 250440, Profit: 43548.75, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 2517, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 50340, Discounts: 2766.4, Sales: 47573.6, COGS: 19760, Profit: 27813.6, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1145, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 343500, Discounts: 28812, Sales: 314688, COGS: 343000, Profit: 28312, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3814, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 45768, Discounts: 2725.38, Sales: 43042.62, COGS: 9733.5, Profit: 33309.12, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1188, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 356400, Discounts: 20139, Sales: 336261, COGS: 239750, Profit: 96511, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 2233, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 669900, Discounts: 57687, Sales: 612213, COGS: 686750, Profit: 74537, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 421, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 52625, Discounts: 14393.75, Sales: 38231.25, COGS: 197400, Profit: 159168.75, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 269, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 94150, Discounts: 70462, Sales: 23688, COGS: 747760, Profit: 724072, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 952, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 19040, Discounts: 1565.2, Sales: 17474.8, COGS: 11180, Profit: 6294.8, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2964, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 889200, Discounts: 28812, Sales: 860388, COGS: 343000, Profit: 517388, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1505, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 10535, Discounts: 273.28, Sales: 10261.72, COGS: 2440, Profit: 7821.72, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1678, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 33560, Discounts: 2051.2, Sales: 31508.8, COGS: 12820, Profit: 18688.8, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4249, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 29743, Discounts: 143.92, Sales: 29599.08, COGS: 1285, Profit: 28314.08, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1677, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 33540, Discounts: 2051.2, Sales: 31488.8, COGS: 12820, Profit: 18668.8, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3051, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 381375, Discounts: 15400, Sales: 365975, COGS: 184800, Profit: 181175, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 3372, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 50580, Discounts: 588, Sales: 49992, COGS: 4900, Profit: 45092, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1686, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 590100, Discounts: 38136, Sales: 551964, COGS: 354120, Profit: 197844, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3086, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 46290, Discounts: 3001.2, Sales: 43288.8, COGS: 25010, Profit: 18278.8, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4150, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 83000, Discounts: 1132.8, Sales: 81867.2, COGS: 7080, Profit: 74787.2, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3027, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 60540, Discounts: 1032, Sales: 59508, COGS: 6450, Profit: 53058, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 4359, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1307700, Discounts: 37488, Sales: 1270212, COGS: 390500, Profit: 879712, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 1589, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 23835, Discounts: 853.2, Sales: 22981.8, COGS: 7110, Profit: 15871.8, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2679, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 334875, Discounts: 11140, Sales: 323735, COGS: 133680, Profit: 190055, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3401, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 23807, Discounts: 705.04, Sales: 23101.96, COGS: 6295, Profit: 16806.96, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2815, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 19705, Discounts: 613.2, Sales: 19091.8, COGS: 5475, Profit: 13616.8, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2964, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 59280, Discounts: 2185.6, Sales: 57094.4, COGS: 13660, Profit: 43434.4, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 4173, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1251900, Discounts: 59040, Sales: 1192860, COGS: 615000, Profit: 577860, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1157, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 8099, Discounts: 379.68, Sales: 7719.32, COGS: 3390, Profit: 4329.32, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3065, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 21455, Discounts: 894.88, Sales: 20560.12, COGS: 7990, Profit: 12570.12, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4080, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 81600, Discounts: 3094.4, Sales: 78505.6, COGS: 19340, Profit: 59165.6, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1713, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 34260, Discounts: 4788.8, Sales: 29471.2, COGS: 29930, Profit: 458.8, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1691, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 591850, Discounts: 38136, Sales: 553714, COGS: 354120, Profit: 199594, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2305, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 27660, Discounts: 574.08, Sales: 27085.92, COGS: 1794, Profit: 25291.92, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3401, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 23807, Discounts: 1627.92, Sales: 22179.08, COGS: 14535, Profit: 7644.08, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2288, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 16016, Discounts: 1309.28, Sales: 14706.72, COGS: 11690, Profit: 3016.72, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 4086, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1225800, Discounts: 15240, Sales: 1210560, COGS: 158750, Profit: 1051810, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2651, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 927850, Discounts: 16086, Sales: 911764, COGS: 149370, Profit: 762394, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3971, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 27797, Discounts: 1309.28, Sales: 26487.72, COGS: 11690, Profit: 14797.72, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2512, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 879200, Discounts: 10668, Sales: 868532, COGS: 99060, Profit: 769472, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2745, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 960750, Discounts: 11816, Sales: 948934, COGS: 109720, Profit: 839214, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1903, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 570900, Discounts: 51216, Sales: 519684, COGS: 533500, Profit: 13816, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2914, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 58280, Discounts: 1132.8, Sales: 57147.2, COGS: 7080, Profit: 50067.2, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1889, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 13223, Discounts: 1627.92, Sales: 11595.08, COGS: 14535, Profit: 2939.92, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1466, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 29320, Discounts: 2185.6, Sales: 27134.4, COGS: 13660, Profit: 13474.4, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 887, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 266100, Discounts: 59040, Sales: 207060, COGS: 615000, Profit: 407940, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 395, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 7900, Discounts: 2432, Sales: 5468, COGS: 15200, Profit: 9732, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1693, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 25395, Discounts: 853.2, Sales: 24541.8, COGS: 7110, Profit: 17431.8, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2649, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 794700, Discounts: 15240, Sales: 779460, COGS: 158750, Profit: 620710, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 3608, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 72160, Discounts: 698.4, Sales: 71461.6, COGS: 4365, Profit: 67096.6, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1073, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 321900, Discounts: 29538, Sales: 292362, COGS: 273500, Profit: 18862, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 2167, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 650100, Discounts: 102667.5, Sales: 547432.5, COGS: 950625, Profit: 403192.5, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1319, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 461650, Discounts: 52479, Sales: 409171, COGS: 433160, Profit: 23989, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1252, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 15024, Discounts: 2506.68, Sales: 12517.32, COGS: 6963, Profit: 5554.32, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1156, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 144500, Discounts: 31466.25, Sales: 113033.75, COGS: 335640, Profit: 222606.25, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1153, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 345900, Discounts: 69255, Sales: 276645, COGS: 641250, Profit: 364605, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2720, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 952000, Discounts: 76135.5, Sales: 875864.5, COGS: 628420, Profit: 247444.5, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3658, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 54870, Discounts: 4961.25, Sales: 49908.75, COGS: 36750, Profit: 13158.75, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2950, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 885000, Discounts: 29538, Sales: 855462, COGS: 273500, Profit: 581962, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1821, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 27315, Discounts: 1656.45, Sales: 25658.55, COGS: 12270, Profit: 13388.55, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1127, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 338100, Discounts: 35748, Sales: 302352, COGS: 331000, Profit: 28648, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 862, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 107750, Discounts: 31466.25, Sales: 76283.75, COGS: 335640, Profit: 259356.25, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3805, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 57075, Discounts: 330.75, Sales: 56744.25, COGS: 2450, Profit: 54294.25, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1415, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 424500, Discounts: 102424.5, Sales: 322075.5, COGS: 948375, Profit: 626299.5, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2231, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 780850, Discounts: 41170.5, Sales: 739679.5, COGS: 339820, Profit: 399859.5, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3649, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 456125, Discounts: 6378.75, Sales: 449746.25, COGS: 68040, Profit: 381706.25, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2948, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 368500, Discounts: 23737.5, Sales: 344762.5, COGS: 253200, Profit: 91562.5, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3395, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1188250, Discounts: 39973.5, Sales: 1148276.5, COGS: 329940, Profit: 818336.5, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2650, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 31800, Discounts: 2112.48, Sales: 29687.52, COGS: 5868, Profit: 23819.52, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 585, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 175500, Discounts: 71793, Sales: 103707, COGS: 664750, Profit: 561043, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1316, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 460600, Discounts: 42572.25, Sales: 418027.75, COGS: 351390, Profit: 66637.75, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 4459, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 53508, Discounts: 950.4, Sales: 52557.6, COGS: 2640, Profit: 49917.6, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2711, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 813300, Discounts: 50409, Sales: 762891, COGS: 466750, Profit: 296141, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3613, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 54195, Discounts: 1656.45, Sales: 52538.55, COGS: 12270, Profit: 40268.55, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1847, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 230875, Discounts: 9866.25, Sales: 221008.75, COGS: 105240, Profit: 115768.75, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2996, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1048600, Discounts: 65236.5, Sales: 983363.5, COGS: 538460, Profit: 444903.5, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2838, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 993300, Discounts: 39973.5, Sales: 953326.5, COGS: 329940, Profit: 623386.5, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1536, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 30720, Discounts: 3049.2, Sales: 27670.8, COGS: 16940, Profit: 10730.8, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1291, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 25820, Discounts: 1193.4, Sales: 24626.6, COGS: 6630, Profit: 17996.6, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1213, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 8491, Discounts: 515.97, Sales: 7975.03, COGS: 4095, Profit: 3880.03, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2370, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 28440, Discounts: 1706.4, Sales: 26733.6, COGS: 4740, Profit: 21993.6, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1979, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 13853, Discounts: 328.23, Sales: 13524.77, COGS: 2605, Profit: 10919.77, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2879, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 57580, Discounts: 1751.4, Sales: 55828.6, COGS: 9730, Profit: 46098.6, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1707, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 34140, Discounts: 1868.4, Sales: 32271.6, COGS: 10380, Profit: 21891.6, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2933, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 20531, Discounts: 226.8, Sales: 20304.2, COGS: 1800, Profit: 18504.2, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1014, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 12168, Discounts: 2124.36, Sales: 10043.64, COGS: 5901, Profit: 4142.64, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 693, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 10395, Discounts: 3547.8, Sales: 6847.2, COGS: 26280, Profit: 19432.8, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3741, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 26187, Discounts: 226.8, Sales: 25960.2, COGS: 1800, Profit: 24160.2, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 3995, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 27965, Discounts: 328.23, Sales: 27636.77, COGS: 2605, Profit: 25031.77, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 953, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 19060, Discounts: 1868.4, Sales: 17191.6, COGS: 10380, Profit: 6811.6, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2530, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 37950, Discounts: 2201.18, Sales: 35748.82, COGS: 16305, Profit: 19443.82, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1372, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 27440, Discounts: null, Sales: 27440, COGS: 16185, Profit: 11255, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2762, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 55240, Discounts: null, Sales: 55240, COGS: 13210, Profit: 42030, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1464, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 21960, Discounts: null, Sales: 21960, COGS: 21780, Profit: 180, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 719, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 10785, Discounts: null, Sales: 10785, COGS: 8880, Profit: 1905, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3576, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 53640, Discounts: null, Sales: 53640, COGS: 24700, Profit: 28940, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 4422, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1547700, Discounts: null, Sales: 1547700, COGS: 393380, Profit: 1154320, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3649, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 54735, Discounts: null, Sales: 54735, COGS: 9210, Profit: 45525, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4172, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 50064, Discounts: null, Sales: 50064, COGS: 7554, Profit: 42510, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3841, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 76820, Discounts: null, Sales: 76820, COGS: 18990, Profit: 57830, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3726, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 44712, Discounts: null, Sales: 44712, COGS: 4635, Profit: 40077, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2625, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 39375, Discounts: null, Sales: 39375, COGS: 24700, Profit: 14675, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1958, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 244750, Discounts: null, Sales: 244750, COGS: 319860, Profit: 75110, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 3271, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 981300, Discounts: null, Sales: 981300, COGS: 239500, Profit: 741800, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2091, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 14637, Discounts: null, Sales: 14637, COGS: 10730, Profit: 3907, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 2530, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 316250, Discounts: null, Sales: 316250, COGS: 41400, Profit: 274850, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2825, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 42375, Discounts: null, Sales: 42375, COGS: 6150, Profit: 36225, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2513, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 50260, Discounts: null, Sales: 50260, COGS: 2920, Profit: 47340, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 883, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 13245, Discounts: null, Sales: 13245, COGS: 9740, Profit: 3505, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2087, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 25044, Discounts: null, Sales: 25044, COGS: 7554, Profit: 17490, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2563, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 897050, Discounts: null, Sales: 897050, COGS: 261560, Profit: 635490, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2846, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 34152, Discounts: null, Sales: 34152, COGS: 1101, Profit: 33051, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 997, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 6979, Discounts: null, Sales: 6979, COGS: 4415, Profit: 2564, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3421, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 51315, Discounts: null, Sales: 51315, COGS: 5490, Profit: 45825, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Marchesa`, UnitsSold: 70000, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 1050000, Discounts: null, Sales: 1050000, COGS: 5490, Profit: 1044510, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2291, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 687300, Discounts: null, Sales: 687300, COGS: 197000, Profit: 490300, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2290, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 34350, Discounts: null, Sales: 34350, COGS: 24720, Profit: 9630, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2133, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 14931, Discounts: null, Sales: 14931, COGS: 5715, Profit: 9216, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3475, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1216250, Discounts: null, Sales: 1216250, COGS: 448500, Profit: 767750, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3686, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 44232, Discounts: null, Sales: 44232, COGS: 2736, Profit: 41496, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3319, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 49785, Discounts: null, Sales: 49785, COGS: 21520, Profit: 28265, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3617, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 72340, Discounts: null, Sales: 72340, COGS: 18170, Profit: 54170, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1266, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 443100, Discounts: null, Sales: 443100, COGS: 393380, Profit: 49720, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 894, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 6258, Discounts: null, Sales: 6258, COGS: 7465, Profit: 1207, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 2725, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 340625, Discounts: null, Sales: 340625, COGS: 216480, Profit: 124145, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3061, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 36732, Discounts: null, Sales: 36732, COGS: 6483, Profit: 30249, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3958, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1385300, Discounts: null, Sales: 1385300, COGS: 261560, Profit: 1123740, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3920, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 47040, Discounts: null, Sales: 47040, COGS: 4635, Profit: 42405, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3381, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 422625, Discounts: null, Sales: 422625, COGS: 338520, Profit: 84105, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1094, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 136750, Discounts: null, Sales: 136750, COGS: 41400, Profit: 95350, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4307, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 1292100, Discounts: null, Sales: 1292100, COGS: 500250, Profit: 791850, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 878, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 10536, Discounts: null, Sales: 10536, COGS: 8514, Profit: 2022, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 496, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 7440, Discounts: null, Sales: 7440, COGS: 21780, Profit: 14340, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3367, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 50505, Discounts: null, Sales: 50505, COGS: 8880, Profit: 41625, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3880, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1358000, Discounts: null, Sales: 1358000, COGS: 397020, Profit: 960980, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2055, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 616500, Discounts: null, Sales: 616500, COGS: 537750, Profit: 78750, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4041, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 80820, Discounts: null, Sales: 80820, COGS: 18170, Profit: 62650, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 3237, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1132950, Discounts: null, Sales: 1132950, COGS: 715000, Profit: 417950, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 630, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 7560, Discounts: null, Sales: 7560, COGS: 5859, Profit: 1701, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4210, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 526250, Discounts: null, Sales: 526250, COGS: 506340, Profit: 19910, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1127, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 22540, Discounts: null, Sales: 22540, COGS: 18990, Profit: 3550, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3438, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 24066, Discounts: null, Sales: 24066, COGS: 8430, Profit: 15636, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2015, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 24180, Discounts: null, Sales: 24180, COGS: 6423, Profit: 17757, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2534, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 17738, Discounts: null, Sales: 17738, COGS: 5715, Profit: 12023, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1384, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 20760, Discounts: null, Sales: 20760, COGS: 6150, Profit: 14610, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3561, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 24927, Discounts: 276.15, Sales: 24650.85, COGS: 19725, Profit: 4925.85, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1823, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 27345, Discounts: 344.4, Sales: 27000.6, COGS: 22960, Profit: 4040.6, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2795, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 19565, Discounts: 72.1, Sales: 19492.9, COGS: 5150, Profit: 14342.9, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 457, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 3199, Discounts: 44.73, Sales: 3154.27, COGS: 3195, Profit: 40.73, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3785, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 26495, Discounts: 92.82, Sales: 26402.18, COGS: 6630, Profit: 19772.18, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 748, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 8976, Discounts: 222.96, Sales: 8753.04, COGS: 5574, Profit: 3179.04, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1021, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 357350, Discounts: 4235, Sales: 353115, COGS: 314600, Profit: 38515, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2076, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 14532, Discounts: 177.03, Sales: 14354.97, COGS: 12645, Profit: 1709.97, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 4316, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 51792, Discounts: 173.4, Sales: 51618.6, COGS: 4335, Profit: 47283.6, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2654, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 331750, Discounts: 412.5, Sales: 331337.5, COGS: 39600, Profit: 291737.5, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 4174, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 50088, Discounts: 320.52, Sales: 49767.48, COGS: 8013, Profit: 41754.48, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1675, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 20100, Discounts: 91.92, Sales: 20008.08, COGS: 2298, Profit: 17710.08, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1572, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 471600, Discounts: 1482, Sales: 470118, COGS: 123500, Profit: 346618, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3736, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1307600, Discounts: 4889.5, Sales: 1302710.5, COGS: 363220, Profit: 939490.5, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1914, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 669900, Discounts: 7542.5, Sales: 662357.5, COGS: 560300, Profit: 102057.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2742, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 41130, Discounts: 332.1, Sales: 40797.9, COGS: 22140, Profit: 18657.9, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1499, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 449700, Discounts: 6903, Sales: 442797, COGS: 575250, Profit: 132453, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3772, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 75440, Discounts: 275.1, Sales: 75164.9, COGS: 13755, Profit: 61409.9, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1112, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 7784, Discounts: 128.1, Sales: 7655.9, COGS: 9150, Profit: 1494.1, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1723, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 516900, Discounts: 7494, Sales: 509406, COGS: 624500, Profit: 115094, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 423, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 52875, Discounts: 828.75, Sales: 52046.25, COGS: 79560, Profit: 27513.75, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2368, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 35520, Discounts: 227.1, Sales: 35292.9, COGS: 15140, Profit: 20152.9, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1586, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 11102, Discounts: 314.48, Sales: 10787.52, COGS: 22462.5, Profit: 11674.98, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3386, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 423250, Discounts: 908.75, Sales: 422341.25, COGS: 87240, Profit: 335101.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 852, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 106500, Discounts: 983.75, Sales: 105516.25, COGS: 94440, Profit: 11076.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2783, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 347875, Discounts: 2278.75, Sales: 345596.25, COGS: 218760, Profit: 126836.25, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2684, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 40260, Discounts: 112.05, Sales: 40147.95, COGS: 7470, Profit: 32677.95, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4393, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 52716, Discounts: 91.92, Sales: 52624.08, COGS: 2298, Profit: 50326.08, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4083, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1224900, Discounts: 8715, Sales: 1216185, COGS: 726250, Profit: 489935, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2816, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 985600, Discounts: 7542.5, Sales: 978057.5, COGS: 560300, Profit: 417757.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 4294, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 85880, Discounts: 772.8, Sales: 85107.2, COGS: 38640, Profit: 46467.2, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2856, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 19992, Discounts: 25.34, Sales: 19966.66, COGS: 1810, Profit: 18156.66, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1407, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 175875, Discounts: 1153.75, Sales: 174721.25, COGS: 110760, Profit: 63961.25, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3850, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 481250, Discounts: 828.75, Sales: 480421.25, COGS: 79560, Profit: 400861.25, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2856, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 19992, Discounts: 146.44, Sales: 19845.56, COGS: 10460, Profit: 9385.56, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1265, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 8855, Discounts: 18.41, Sales: 8836.59, COGS: 1315, Profit: 7521.59, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3892, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1362200, Discounts: 3302.25, Sales: 1358897.75, COGS: 245310, Profit: 1113587.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 3068, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 383500, Discounts: 908.75, Sales: 382591.25, COGS: 87240, Profit: 295351.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2181, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 272625, Discounts: 983.75, Sales: 271641.25, COGS: 94440, Profit: 177201.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1356, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 406800, Discounts: 2958, Sales: 403842, COGS: 246500, Profit: 157342, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 2545, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 763500, Discounts: 1482, Sales: 762018, COGS: 123500, Profit: 638518, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1814, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 634900, Discounts: 4889.5, Sales: 630010.5, COGS: 363220, Profit: 266790.5, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1495, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 186875, Discounts: 2180, Sales: 184695, COGS: 209280, Profit: 24585, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1154, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 13848, Discounts: 238.68, Sales: 13609.32, COGS: 5967, Profit: 7642.32, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 4180, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 62700, Discounts: 48.15, Sales: 62651.85, COGS: 3210, Profit: 59441.85, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1463, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 182875, Discounts: 1856.25, Sales: 181018.75, COGS: 89100, Profit: 91918.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 215, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 2580, Discounts: 310.8, Sales: 2269.2, COGS: 3885, Profit: 1615.8, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 4099, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 1229700, Discounts: 1284, Sales: 1228416, COGS: 53500, Profit: 1174916, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 2660, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 18620, Discounts: 300.3, Sales: 18319.7, COGS: 10725, Profit: 7594.7, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 566, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 198100, Discounts: 19964, Sales: 178136, COGS: 741520, Profit: 563384, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 3255, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 39060, Discounts: 274.08, Sales: 38785.92, COGS: 3426, Profit: 35359.92, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 772, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 15440, Discounts: 626.4, Sales: 14813.6, COGS: 15660, Profit: 846.4, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1135, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 13620, Discounts: 165.6, Sales: 13454.4, COGS: 2070, Profit: 11384.4, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 3826, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 478250, Discounts: 4150, Sales: 474100, COGS: 199200, Profit: 274900, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1193, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 17895, Discounts: 708.9, Sales: 17186.1, COGS: 23630, Profit: 6443.9, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2530, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 759000, Discounts: 5508, Sales: 753492, COGS: 229500, Profit: 523992, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3451, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1035300, Discounts: 10368, Sales: 1024932, COGS: 432000, Profit: 592932, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3059, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 36708, Discounts: 274.08, Sales: 36433.92, COGS: 3426, Profit: 33007.92, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3957, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 494625, Discounts: 1655, Sales: 492970, COGS: 79440, Profit: 413530, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3444, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 41328, Discounts: 310.8, Sales: 41017.2, COGS: 3885, Profit: 37132.2, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4388, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 548500, Discounts: 2022.5, Sales: 546477.5, COGS: 97080, Profit: 449397.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2106, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 263250, Discounts: 5362.5, Sales: 257887.5, COGS: 257400, Profit: 487.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 799, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 9588, Discounts: 428.4, Sales: 9159.6, COGS: 5355, Profit: 3804.6, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3154, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 946200, Discounts: 11496, Sales: 934704, COGS: 479000, Profit: 455704, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4108, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1437800, Discounts: 19964, Sales: 1417836, COGS: 741520, Profit: 676316, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3760, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 470000, Discounts: 6822.5, Sales: 463177.5, COGS: 327480, Profit: 135697.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 377, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 5655, Discounts: 577.5, Sales: 5077.5, COGS: 19250, Profit: 14172.5, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2110, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 14770, Discounts: 281.82, Sales: 14488.18, COGS: 10065, Profit: 4423.18, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2334, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 28008, Discounts: 253.2, Sales: 27754.8, COGS: 3165, Profit: 24589.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 580, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 6960, Discounts: 260.16, Sales: 6699.84, COGS: 3252, Profit: 3447.84, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2610, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 52200, Discounts: 626.4, Sales: 51573.6, COGS: 15660, Profit: 35913.6, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 1598, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 559300, Discounts: 20762, Sales: 538538, COGS: 771160, Profit: 232622, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 1459, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 510650, Discounts: 20139, Sales: 490511, COGS: 748020, Profit: 257509, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3284, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 410500, Discounts: 2022.5, Sales: 408477.5, COGS: 97080, Profit: 311397.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 1197, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 149625, Discounts: 5362.5, Sales: 144262.5, COGS: 257400, Profit: 113137.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3774, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 45288, Discounts: 253.2, Sales: 45034.8, COGS: 3165, Profit: 41869.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2303, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 46060, Discounts: 217.6, Sales: 45842.4, COGS: 5440, Profit: 40402.4, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2572, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 30864, Discounts: 260.16, Sales: 30603.84, COGS: 3252, Profit: 27351.84, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 320, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 40000, Discounts: 1655, Sales: 38345, COGS: 79440, Profit: 41095, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2126, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 637800, Discounts: 1284, Sales: 636516, COGS: 53500, Profit: 583016, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3275, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1146250, Discounts: 20139, Sales: 1126111, COGS: 748020, Profit: 378091, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3582, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 447750, Discounts: 6822.5, Sales: 440927.5, COGS: 327480, Profit: 113447.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 783, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 274050, Discounts: 1862, Sales: 272188, COGS: 69160, Profit: 203028, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1202, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 420700, Discounts: 13580, Sales: 407120, COGS: 504400, Profit: 97280, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4056, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 1216800, Discounts: 1554, Sales: 1215246, COGS: 64750, Profit: 1150496, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2144, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 643200, Discounts: 6606, Sales: 636594, COGS: 275250, Profit: 361344, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3502, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 437750, Discounts: 5690, Sales: 432060, COGS: 273120, Profit: 158940, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1397, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 488950, Discounts: 20762, Sales: 468188, COGS: 771160, Profit: 302972, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 679, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 13580, Discounts: 494.4, Sales: 13085.6, COGS: 12360, Profit: 725.6, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2351, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 47020, Discounts: 376.4, Sales: 46643.6, COGS: 9410, Profit: 37233.6, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2043, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 612900, Discounts: 11496, Sales: 601404, COGS: 479000, Profit: 122404, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 3565, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 445625, Discounts: 15913.13, Sales: 429711.88, COGS: 509220, Profit: 79508.13, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1401, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 28020, Discounts: 1548, Sales: 26472, COGS: 25800, Profit: 672, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2077, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 623100, Discounts: 6201, Sales: 616899, COGS: 172250, Profit: 444649, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 3643, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 43716, Discounts: 700.92, Sales: 43015.08, COGS: 5841, Profit: 37174.08, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1105, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 13260, Discounts: 326.88, Sales: 12933.12, COGS: 2724, Profit: 10209.12, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2960, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 20720, Discounts: 411.18, Sales: 20308.82, COGS: 9790, Profit: 10518.82, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1201, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 14412, Discounts: 684.36, Sales: 13727.64, COGS: 5703, Profit: 8024.64, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 2321, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 16247, Discounts: 114.24, Sales: 16132.76, COGS: 2720, Profit: 13412.76, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3640, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 1274000, Discounts: 18868.5, Sales: 1255131.5, COGS: 467220, Profit: 787911.5, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3972, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 496500, Discounts: 4826.25, Sales: 491673.75, COGS: 154440, Profit: 337233.75, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3878, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 484750, Discounts: 6397.5, Sales: 478352.5, COGS: 204720, Profit: 273632.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2278, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 683400, Discounts: 21910.5, Sales: 661489.5, COGS: 608625, Profit: 52864.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1075, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 134375, Discounts: 6652.5, Sales: 127722.5, COGS: 212880, Profit: 85157.5, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 4050, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 48600, Discounts: 684.36, Sales: 47915.64, COGS: 5703, Profit: 42212.64, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3035, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 910500, Discounts: 6201, Sales: 904299, COGS: 172250, Profit: 732049, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3636, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 454500, Discounts: 5887.5, Sales: 448612.5, COGS: 188400, Profit: 260212.5, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1379, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 16548, Discounts: 493.02, Sales: 16054.98, COGS: 4108.5, Profit: 11946.48, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4492, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 561500, Discounts: 7533.75, Sales: 553966.25, COGS: 241080, Profit: 312886.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 764, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 11460, Discounts: 875.25, Sales: 10584.75, COGS: 19450, Profit: 8865.25, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1744, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 218000, Discounts: 4826.25, Sales: 213173.75, COGS: 154440, Profit: 58733.75, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2341, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 292625, Discounts: 6397.5, Sales: 286227.5, COGS: 204720, Profit: 81507.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3835, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 479375, Discounts: 7533.75, Sales: 471841.25, COGS: 241080, Profit: 230761.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1161, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 348300, Discounts: 25596, Sales: 322704, COGS: 711000, Profit: 388296, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 876, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 10512, Discounts: 689.76, Sales: 9822.24, COGS: 5748, Profit: 4074.24, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1705, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 213125, Discounts: 5887.5, Sales: 207237.5, COGS: 188400, Profit: 18837.5, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1805, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 541500, Discounts: 16866, Sales: 524634, COGS: 468500, Profit: 56134, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 389, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 136150, Discounts: 17241, Sales: 118909, COGS: 426920, Profit: 308011, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2745, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 41175, Discounts: 875.25, Sales: 40299.75, COGS: 19450, Profit: 20849.75, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1459, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 29180, Discounts: 498.6, Sales: 28681.4, COGS: 8310, Profit: 20371.4, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3938, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 27566, Discounts: 369.6, Sales: 27196.4, COGS: 8800, Profit: 18396.4, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 4236, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 84720, Discounts: 2310.3, Sales: 82409.7, COGS: 38505, Profit: 43904.7, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3627, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 43524, Discounts: 892.44, Sales: 42631.56, COGS: 7437, Profit: 35194.56, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1756, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 26340, Discounts: 1218.6, Sales: 25121.4, COGS: 20310, Profit: 4811.4, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 307, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 4605, Discounts: 1218.6, Sales: 3386.4, COGS: 20310, Profit: 16923.6, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 4489, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 67335, Discounts: 1356.6, Sales: 65978.4, COGS: 22610, Profit: 43368.4, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2167, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 43340, Discounts: 588.8, Sales: 42751.2, COGS: 7360, Profit: 35391.2, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1137, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 7959, Discounts: 798.28, Sales: 7160.72, COGS: 14255, Profit: 7094.28, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1222, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 366600, Discounts: 24252, Sales: 342348, COGS: 505250, Profit: 162902, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 489, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 171150, Discounts: 3836, Sales: 167314, COGS: 71240, Profit: 96074, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4133, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 61995, Discounts: 1180.2, Sales: 60814.8, COGS: 19670, Profit: 41144.8, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2743, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 822900, Discounts: 22308, Sales: 800592, COGS: 464750, Profit: 335842, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 3699, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 25893, Discounts: 798.28, Sales: 25094.72, COGS: 14255, Profit: 10839.72, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 4460, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1338000, Discounts: 24252, Sales: 1313748, COGS: 505250, Profit: 808498, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1232, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 154000, Discounts: 5690, Sales: 148310, COGS: 136560, Profit: 11750, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2586, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 18102, Discounts: 1190.28, Sales: 16911.72, COGS: 21255, Profit: 4343.28, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1332, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 166500, Discounts: 3975, Sales: 162525, COGS: 95400, Profit: 67125, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4487, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1346100, Discounts: 16974, Sales: 1329126, COGS: 353625, Profit: 975501, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3862, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1158600, Discounts: 35016, Sales: 1123584, COGS: 729500, Profit: 394084, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1765, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 617750, Discounts: 48300, Sales: 569450, COGS: 897000, Profit: 327550, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3533, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 441625, Discounts: 14940, Sales: 426685, COGS: 358560, Profit: 68125, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2016, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 30240, Discounts: 130.8, Sales: 30109.2, COGS: 2180, Profit: 27929.2, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2938, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 58760, Discounts: 1659.2, Sales: 57100.8, COGS: 20740, Profit: 36360.8, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3352, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 67040, Discounts: 844.8, Sales: 66195.2, COGS: 10560, Profit: 55635.2, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4409, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 66135, Discounts: 402.6, Sales: 65732.4, COGS: 6710, Profit: 59022.4, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3323, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 49845, Discounts: 908.4, Sales: 48936.6, COGS: 15140, Profit: 33796.6, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2430, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 850500, Discounts: 3836, Sales: 846664, COGS: 71240, Profit: 775424, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 535, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 66875, Discounts: 5690, Sales: 61185, COGS: 136560, Profit: 75375, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1523, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 18276, Discounts: 703.2, Sales: 17572.8, COGS: 4395, Profit: 13177.8, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3631, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 72620, Discounts: 2116.8, Sales: 70503.2, COGS: 26460, Profit: 44043.2, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1782, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 623700, Discounts: 30478, Sales: 593222, COGS: 566020, Profit: 27202, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 347, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 4164, Discounts: 415.68, Sales: 3748.32, COGS: 2598, Profit: 1150.32, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 4147, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1451450, Discounts: 4886, Sales: 1446564, COGS: 90740, Profit: 1355824, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3509, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1228150, Discounts: 30478, Sales: 1197672, COGS: 566020, Profit: 631652, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 2774, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 41610, Discounts: 908.4, Sales: 40701.6, COGS: 15140, Profit: 25561.6, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2943, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1030050, Discounts: 26110, Sales: 1003940, COGS: 484900, Profit: 519040, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 4037, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 504625, Discounts: 5370, Sales: 499255, COGS: 128880, Profit: 370375, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4146, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1451100, Discounts: 26698, Sales: 1424402, COGS: 495820, Profit: 928582, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 4123, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 61845, Discounts: 402.6, Sales: 61442.4, COGS: 6710, Profit: 54732.4, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1337, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 467950, Discounts: 24892, Sales: 443058, COGS: 462280, Profit: 19222, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 599, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 4193, Discounts: 405.65, Sales: 3787.35, COGS: 5795, Profit: 2007.65, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 725, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 5075, Discounts: 480.2, Sales: 4594.8, COGS: 6860, Profit: 2265.2, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 477, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 3339, Discounts: 822.15, Sales: 2516.85, COGS: 11745, Profit: 9228.15, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2325, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 16275, Discounts: 941.15, Sales: 15333.85, COGS: 13445, Profit: 1888.85, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 675, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 8100, Discounts: 1458.6, Sales: 6641.4, COGS: 7293, Profit: 651.6, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2990, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 35880, Discounts: 1458.6, Sales: 34421.4, COGS: 7293, Profit: 27128.4, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1072, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 7504, Discounts: 941.15, Sales: 6562.85, COGS: 13445, Profit: 6882.15, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1048, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 7336, Discounts: 589.05, Sales: 6746.95, COGS: 8415, Profit: 1668.05, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 469, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 5628, Discounts: 673.8, Sales: 4954.2, COGS: 3369, Profit: 1585.2, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 804, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 5628, Discounts: 405.65, Sales: 5222.35, COGS: 5795, Profit: 572.65, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 4240, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 50880, Discounts: 1119, Sales: 49761, COGS: 5595, Profit: 44166, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1976, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 23712, Discounts: 669.6, Sales: 23042.4, COGS: 3348, Profit: 19694.4, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1984, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 39680, Discounts: 1563, Sales: 38117, COGS: 15630, Profit: 22487, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 480, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 144000, Discounts: 14865, Sales: 129135, COGS: 247750, Profit: 118615, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 3551, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 24857, Discounts: 355.6, Sales: 24501.4, COGS: 5080, Profit: 19421.4, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1205, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 18075, Discounts: 2093.25, Sales: 15981.75, COGS: 27910, Profit: 11928.25, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2480, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 17360, Discounts: 199.5, Sales: 17160.5, COGS: 2850, Profit: 14310.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 2926, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 20482, Discounts: 870.45, Sales: 19611.55, COGS: 12435, Profit: 7176.55, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3210, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 1123500, Discounts: 24228.75, Sales: 1099271.25, COGS: 359970, Profit: 739301.25, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 3221, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 402625, Discounts: 22668.75, Sales: 379956.25, COGS: 435240, Profit: 55283.75, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2389, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 836150, Discounts: 12600, Sales: 823550, COGS: 187200, Profit: 636350, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 1127, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 13524, Discounts: 1405.2, Sales: 12118.8, COGS: 7026, Profit: 5092.8, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 319, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 95700, Discounts: 16500, Sales: 79200, COGS: 275000, Profit: 195800, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1610, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 32200, Discounts: 1303, Sales: 30897, COGS: 13030, Profit: 17867, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4100, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 512500, Discounts: 18700, Sales: 493800, COGS: 359040, Profit: 134760, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1012, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 126500, Discounts: 14906.25, Sales: 111593.75, COGS: 286200, Profit: 174606.25, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3337, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1001100, Discounts: 24105, Sales: 976995, COGS: 401750, Profit: 575245, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3955, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 27685, Discounts: 814.45, Sales: 26870.55, COGS: 11635, Profit: 15235.55, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4347, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1304100, Discounts: 14865, Sales: 1289235, COGS: 247750, Profit: 1041485, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1548, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 541800, Discounts: 10535, Sales: 531265, COGS: 156520, Profit: 374745, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2153, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 32295, Discounts: 1965, Sales: 30330, COGS: 26200, Profit: 4130, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3789, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1326150, Discounts: 21490, Sales: 1304660, COGS: 319280, Profit: 985380, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4364, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 87280, Discounts: 1389, Sales: 85891, COGS: 13890, Profit: 72001, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4126, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 515750, Discounts: 5381.25, Sales: 510368.75, COGS: 103320, Profit: 407048.75, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1343, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 167875, Discounts: 4400, Sales: 163475, COGS: 84480, Profit: 78995, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 245, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 4900, Discounts: 1802, Sales: 3098, COGS: 18020, Profit: 14922, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3376, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 67520, Discounts: 2663, Sales: 64857, COGS: 26630, Profit: 38227, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1401, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 9807, Discounts: 747.6, Sales: 9059.4, COGS: 10680, Profit: 1620.6, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3483, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 52245, Discounts: 1587, Sales: 50658, COGS: 21160, Profit: 29498, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2244, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 33660, Discounts: 416.25, Sales: 33243.75, COGS: 5550, Profit: 27693.75, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 1360, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 20400, Discounts: 2145.75, Sales: 18254.25, COGS: 28610, Profit: 10355.75, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 279, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 34875, Discounts: 5043.75, Sales: 29831.25, COGS: 96840, Profit: 67008.75, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2521, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 882350, Discounts: 10535, Sales: 871815, COGS: 156520, Profit: 715295, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2433, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 48660, Discounts: 2832, Sales: 45828, COGS: 28320, Profit: 17508, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1738, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 34760, Discounts: 1579, Sales: 33181, COGS: 15790, Profit: 17391, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1106, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 138250, Discounts: 5381.25, Sales: 132868.75, COGS: 103320, Profit: 29548.75, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3379, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 422375, Discounts: 4400, Sales: 417975, COGS: 84480, Profit: 333495, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1221, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 24420, Discounts: 1033, Sales: 23387, COGS: 10330, Profit: 13057, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 213, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 63900, Discounts: 18750, Sales: 45150, COGS: 312500, Profit: 267350, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3335, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 66700, Discounts: 1389, Sales: 65311, COGS: 13890, Profit: 51421, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1260, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 25200, Discounts: 1265, Sales: 23935, COGS: 12650, Profit: 11285, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3034, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 60680, Discounts: 2297, Sales: 58383, COGS: 22970, Profit: 35413, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2929, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 58580, Discounts: 2663, Sales: 55917, COGS: 26630, Profit: 29287, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2389, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 16723, Discounts: 199.5, Sales: 16523.5, COGS: 2850, Profit: 13673.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3086, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 21602, Discounts: 870.45, Sales: 20731.55, COGS: 12435, Profit: 8296.55, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 745, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 260750, Discounts: 23625, Sales: 237125, COGS: 351000, Profit: 113875, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1266, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 443100, Discounts: 9660, Sales: 433440, COGS: 143520, Profit: 289920, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 3790, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1326500, Discounts: 21490, Sales: 1305010, COGS: 319280, Profit: 985730, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4287, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 1286100, Discounts: 18750, Sales: 1267350, COGS: 312500, Profit: 954850, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3193, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 47895, Discounts: 3420.9, Sales: 44474.1, COGS: 38010, Profit: 6464.1, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1967, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 39340, Discounts: 1341, Sales: 37999, COGS: 11175, Profit: 26824, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 631, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 9465, Discounts: 2559.6, Sales: 6905.4, COGS: 28440, Profit: 21534.6, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3469, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 41628, Discounts: 404.64, Sales: 41223.36, COGS: 1686, Profit: 39537.36, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 570, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 6840, Discounts: 1655.28, Sales: 5184.72, COGS: 6897, Profit: 1712.28, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 3215, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 48225, Discounts: 1827, Sales: 46398, COGS: 20300, Profit: 26098, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 3754, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 26278, Discounts: 110.46, Sales: 26167.54, COGS: 1315, Profit: 24852.54, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2187, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 273375, Discounts: 6652.5, Sales: 266722.5, COGS: 106440, Profit: 160282.5, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1959, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 685650, Discounts: 20580, Sales: 665070, COGS: 254800, Profit: 410270, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2181, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 763350, Discounts: 30660, Sales: 732690, COGS: 379600, Profit: 353090, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3559, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 24913, Discounts: 589.26, Sales: 24323.74, COGS: 7015, Profit: 17308.74, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2205, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 26460, Discounts: 1960.56, Sales: 24499.44, COGS: 8169, Profit: 16330.44, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1890, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 661500, Discounts: 31416, Sales: 630084, COGS: 388960, Profit: 241124, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1296, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 15552, Discounts: 1655.28, Sales: 13896.72, COGS: 6897, Profit: 6999.72, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 775, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 271250, Discounts: 15267, Sales: 255983, COGS: 189020, Profit: 66963, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2417, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 302125, Discounts: 7140, Sales: 294985, COGS: 114240, Profit: 180745, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1158, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 144750, Discounts: 20662.5, Sales: 124087.5, COGS: 330600, Profit: 206512.5, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 803, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 12045, Discounts: 1377, Sales: 10668, COGS: 15300, Profit: 4632, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3705, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1296750, Discounts: 31416, Sales: 1265334, COGS: 388960, Profit: 876374, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 589, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 4123, Discounts: 629.16, Sales: 3493.84, COGS: 7490, Profit: 3996.16, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3797, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1139100, Discounts: 21978, Sales: 1117122, COGS: 305250, Profit: 811872, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1321, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 462350, Discounts: 43596, Sales: 418754, COGS: 539760, Profit: 121006, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3999, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 59985, Discounts: 2559.6, Sales: 57425.4, COGS: 28440, Profit: 28985.4, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 4256, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 29792, Discounts: 629.16, Sales: 29162.84, COGS: 7490, Profit: 21672.84, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1643, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 492900, Discounts: 21978, Sales: 470922, COGS: 305250, Profit: 165672, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1912, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 38240, Discounts: 1347.6, Sales: 36892.4, COGS: 11230, Profit: 25662.4, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1610, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 483000, Discounts: 43848, Sales: 439152, COGS: 609000, Profit: 169848, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2160, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 270000, Discounts: 14906.25, Sales: 255093.75, COGS: 238500, Profit: 16593.75, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 466, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 163100, Discounts: 35259, Sales: 127841, COGS: 436540, Profit: 308699, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 328, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 114800, Discounts: 15267, Sales: 99533, COGS: 189020, Profit: 89487, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 4099, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 28693, Discounts: 589.26, Sales: 28103.74, COGS: 7015, Profit: 21088.74, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 990, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 346500, Discounts: 43596, Sales: 302904, COGS: 539760, Profit: 236856, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1433, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 28660, Discounts: 2108.4, Sales: 26551.6, COGS: 17570, Profit: 8981.6, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1478, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 22170, Discounts: 1978.2, Sales: 20191.8, COGS: 21980, Profit: 1788.2, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3798, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 56970, Discounts: 1568.7, Sales: 55401.3, COGS: 17430, Profit: 37971.3, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 447, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 6705, Discounts: 1037.7, Sales: 5667.3, COGS: 11530, Profit: 5862.7, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1711, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 34220, Discounts: 2108.4, Sales: 32111.6, COGS: 17570, Profit: 14541.6, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 745, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 14900, Discounts: 1201.2, Sales: 13698.8, COGS: 10010, Profit: 3688.8, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 1732, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 12124, Discounts: 559.86, Sales: 11564.14, COGS: 6665, Profit: 4899.14, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1759, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 26385, Discounts: 1037.7, Sales: 25347.3, COGS: 11530, Profit: 13817.3, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 338, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 4056, Discounts: 610.68, Sales: 3445.32, COGS: 2181, Profit: 1264.32, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 3911, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 46932, Discounts: 1582.56, Sales: 45349.44, COGS: 5652, Profit: 39697.44, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3691, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 73820, Discounts: 2567.6, Sales: 71252.4, COGS: 18340, Profit: 52912.4, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 4473, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 53676, Discounts: 1965.6, Sales: 51710.4, COGS: 7020, Profit: 44690.4, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 383, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 4596, Discounts: 1967.28, Sales: 2628.72, COGS: 7026, Profit: 4397.28, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3105, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 21735, Discounts: 505.19, Sales: 21229.81, COGS: 5155, Profit: 16074.81, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1062, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 15930, Discounts: 1325.1, Sales: 14604.9, COGS: 12620, Profit: 1984.9, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 4083, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 28581, Discounts: 556.15, Sales: 28024.85, COGS: 5675, Profit: 22349.85, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3974, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 27818, Discounts: 268.03, Sales: 27549.97, COGS: 2735, Profit: 24814.97, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3723, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 26061, Discounts: 775.18, Sales: 25285.82, COGS: 7910, Profit: 17375.82, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2435, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 29220, Discounts: 1460.34, Sales: 27759.66, COGS: 5215.5, Profit: 22544.16, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1678, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 20136, Discounts: 1860.6, Sales: 18275.4, COGS: 6645, Profit: 11630.4, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1763, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 12341, Discounts: 775.18, Sales: 11565.82, COGS: 7910, Profit: 3655.82, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 4473, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 31311, Discounts: 556.15, Sales: 30754.85, COGS: 5675, Profit: 25079.85, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1246, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 436100, Discounts: 43144.5, Sales: 392955.5, COGS: 457860, Profit: 64904.5, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1615, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 484500, Discounts: 9408, Sales: 475092, COGS: 112000, Profit: 363092, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 749, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 224700, Discounts: 45801, Sales: 178899, COGS: 545250, Profit: 366351, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1318, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 26360, Discounts: 2766.4, Sales: 23593.6, COGS: 19760, Profit: 3833.6, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 2882, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 864600, Discounts: 45801, Sales: 818799, COGS: 545250, Profit: 273549, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3039, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 379875, Discounts: 21875, Sales: 358000, COGS: 300000, Profit: 58000, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2484, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 745200, Discounts: 35742, Sales: 709458, COGS: 425500, Profit: 283958, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3169, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 950700, Discounts: 9408, Sales: 941292, COGS: 112000, Profit: 829292, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4080, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 510000, Discounts: 30738.75, Sales: 479261.25, COGS: 421560, Profit: 57701.25, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3943, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 59145, Discounts: 2206.05, Sales: 56938.95, COGS: 21010, Profit: 35928.95, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 784, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 11760, Discounts: 3077.55, Sales: 8682.45, COGS: 29310, Profit: 20627.55, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 253, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 5060, Discounts: 2149, Sales: 2911, COGS: 15350, Profit: 12439, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1316, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 394800, Discounts: 23583, Sales: 371217, COGS: 280750, Profit: 90467, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 808, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 242400, Discounts: 29484, Sales: 212916, COGS: 351000, Profit: 138084, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3295, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 39540, Discounts: 2320.92, Sales: 37219.08, COGS: 8289, Profit: 28930.08, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 520, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 3640, Discounts: 1041.25, Sales: 2598.75, COGS: 10625, Profit: 8026.25, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 799, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 239700, Discounts: 34839, Sales: 204861, COGS: 414750, Profit: 209889, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3942, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 78840, Discounts: 852.6, Sales: 77987.4, COGS: 6090, Profit: 71897.4, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2498, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 312250, Discounts: 18261.25, Sales: 293988.75, COGS: 250440, Profit: 43548.75, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 2517, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 50340, Discounts: 2766.4, Sales: 47573.6, COGS: 19760, Profit: 27813.6, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3182, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 63640, Discounts: 1989.4, Sales: 61650.6, COGS: 14210, Profit: 47440.6, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1145, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 343500, Discounts: 28812, Sales: 314688, COGS: 343000, Profit: 28312, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 895, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 17900, Discounts: 823.2, Sales: 17076.8, COGS: 5880, Profit: 11196.8, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3814, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 45768, Discounts: 2725.38, Sales: 43042.62, COGS: 9733.5, Profit: 33309.12, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1188, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 356400, Discounts: 20139, Sales: 336261, COGS: 239750, Profit: 96511, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 2233, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 669900, Discounts: 57687, Sales: 612213, COGS: 686750, Profit: 74537, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 421, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 52625, Discounts: 14393.75, Sales: 38231.25, COGS: 197400, Profit: 159168.75, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 269, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 94150, Discounts: 70462, Sales: 23688, COGS: 747760, Profit: 724072, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3766, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 470750, Discounts: 8697.5, Sales: 462052.5, COGS: 119280, Profit: 342772.5, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 952, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 19040, Discounts: 1565.2, Sales: 17474.8, COGS: 11180, Profit: 6294.8, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2964, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 889200, Discounts: 28812, Sales: 860388, COGS: 343000, Profit: 517388, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1505, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 10535, Discounts: 273.28, Sales: 10261.72, COGS: 2440, Profit: 7821.72, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1678, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 33560, Discounts: 2051.2, Sales: 31508.8, COGS: 12820, Profit: 18688.8, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4249, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 29743, Discounts: 143.92, Sales: 29599.08, COGS: 1285, Profit: 28314.08, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1677, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 33540, Discounts: 2051.2, Sales: 31488.8, COGS: 12820, Profit: 18668.8, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3051, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 381375, Discounts: 15400, Sales: 365975, COGS: 184800, Profit: 181175, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 3372, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 50580, Discounts: 588, Sales: 49992, COGS: 4900, Profit: 45092, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1686, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 590100, Discounts: 38136, Sales: 551964, COGS: 354120, Profit: 197844, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3086, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 46290, Discounts: 3001.2, Sales: 43288.8, COGS: 25010, Profit: 18278.8, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4150, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 83000, Discounts: 1132.8, Sales: 81867.2, COGS: 7080, Profit: 74787.2, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3027, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 60540, Discounts: 1032, Sales: 59508, COGS: 6450, Profit: 53058, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 4359, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1307700, Discounts: 37488, Sales: 1270212, COGS: 390500, Profit: 879712, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 3628, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1088400, Discounts: 30792, Sales: 1057608, COGS: 320750, Profit: 736858, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 1589, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 23835, Discounts: 853.2, Sales: 22981.8, COGS: 7110, Profit: 15871.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2679, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 334875, Discounts: 11140, Sales: 323735, COGS: 133680, Profit: 190055, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3401, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 23807, Discounts: 705.04, Sales: 23101.96, COGS: 6295, Profit: 16806.96, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2815, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 19705, Discounts: 613.2, Sales: 19091.8, COGS: 5475, Profit: 13616.8, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2964, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 59280, Discounts: 2185.6, Sales: 57094.4, COGS: 13660, Profit: 43434.4, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 4173, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1251900, Discounts: 59040, Sales: 1192860, COGS: 615000, Profit: 577860, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1157, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 8099, Discounts: 379.68, Sales: 7719.32, COGS: 3390, Profit: 4329.32, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3065, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 21455, Discounts: 894.88, Sales: 20560.12, COGS: 7990, Profit: 12570.12, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1962, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 13734, Discounts: 1349.04, Sales: 12384.96, COGS: 12045, Profit: 339.96, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4080, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 81600, Discounts: 3094.4, Sales: 78505.6, COGS: 19340, Profit: 59165.6, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1713, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 34260, Discounts: 4788.8, Sales: 29471.2, COGS: 29930, Profit: 458.8, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2795, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 978250, Discounts: 60088, Sales: 918162, COGS: 557960, Profit: 360202, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 4082, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 28574, Discounts: 1089.76, Sales: 27484.24, COGS: 9730, Profit: 17754.24, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1691, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 591850, Discounts: 38136, Sales: 553714, COGS: 354120, Profit: 199594, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2305, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 27660, Discounts: 574.08, Sales: 27085.92, COGS: 1794, Profit: 25291.92, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3401, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 23807, Discounts: 1627.92, Sales: 22179.08, COGS: 14535, Profit: 7644.08, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2288, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 16016, Discounts: 1309.28, Sales: 14706.72, COGS: 11690, Profit: 3016.72, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 2399, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 719700, Discounts: 9264, Sales: 710436, COGS: 96500, Profit: 613936, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 4086, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1225800, Discounts: 15240, Sales: 1210560, COGS: 158750, Profit: 1051810, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2651, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 927850, Discounts: 16086, Sales: 911764, COGS: 149370, Profit: 762394, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3971, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 27797, Discounts: 1309.28, Sales: 26487.72, COGS: 11690, Profit: 14797.72, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2512, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 879200, Discounts: 10668, Sales: 868532, COGS: 99060, Profit: 769472, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2745, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 960750, Discounts: 11816, Sales: 948934, COGS: 109720, Profit: 839214, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1903, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 570900, Discounts: 51216, Sales: 519684, COGS: 533500, Profit: 13816, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 647, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 194100, Discounts: 19392, Sales: 174708, COGS: 202000, Profit: 27292, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2914, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 58280, Discounts: 1132.8, Sales: 57147.2, COGS: 7080, Profit: 50067.2, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1889, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 13223, Discounts: 1627.92, Sales: 11595.08, COGS: 14535, Profit: 2939.92, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1466, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 29320, Discounts: 2185.6, Sales: 27134.4, COGS: 13660, Profit: 13474.4, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 887, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 266100, Discounts: 59040, Sales: 207060, COGS: 615000, Profit: 407940, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 395, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 7900, Discounts: 2432, Sales: 5468, COGS: 15200, Profit: 9732, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1693, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 25395, Discounts: 853.2, Sales: 24541.8, COGS: 7110, Profit: 17431.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2459, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 29508, Discounts: 1320, Sales: 28188, COGS: 4125, Profit: 24063, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2649, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 794700, Discounts: 15240, Sales: 779460, COGS: 158750, Profit: 620710, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 3608, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 72160, Discounts: 698.4, Sales: 71461.6, COGS: 4365, Profit: 67096.6, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1073, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 321900, Discounts: 29538, Sales: 292362, COGS: 273500, Profit: 18862, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1754, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 21048, Discounts: 396.36, Sales: 20651.64, COGS: 1101, Profit: 19550.64, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 2167, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 650100, Discounts: 102667.5, Sales: 547432.5, COGS: 950625, Profit: 403192.5, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1319, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 461650, Discounts: 52479, Sales: 409171, COGS: 433160, Profit: 23989, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1679, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 503700, Discounts: 8694, Sales: 495006, COGS: 80500, Profit: 414506, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1252, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 15024, Discounts: 2506.68, Sales: 12517.32, COGS: 6963, Profit: 5554.32, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3493, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 436625, Discounts: 20891.25, Sales: 415733.75, COGS: 222840, Profit: 192893.75, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1697, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 11879, Discounts: 1014.93, Sales: 10864.07, COGS: 8055, Profit: 2809.07, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1156, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 144500, Discounts: 31466.25, Sales: 113033.75, COGS: 335640, Profit: 222606.25, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 726, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 217800, Discounts: 9018, Sales: 208782, COGS: 83500, Profit: 125282, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1153, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 345900, Discounts: 69255, Sales: 276645, COGS: 641250, Profit: 364605, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2720, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 952000, Discounts: 76135.5, Sales: 875864.5, COGS: 628420, Profit: 247444.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3658, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 54870, Discounts: 4961.25, Sales: 49908.75, COGS: 36750, Profit: 13158.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2950, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 885000, Discounts: 29538, Sales: 855462, COGS: 273500, Profit: 581962, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1821, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 27315, Discounts: 1656.45, Sales: 25658.55, COGS: 12270, Profit: 13388.55, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 4174, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 50088, Discounts: 396.36, Sales: 49691.64, COGS: 1101, Profit: 48590.64, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1127, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 338100, Discounts: 35748, Sales: 302352, COGS: 331000, Profit: 28648, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2209, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 26508, Discounts: 1917, Sales: 24591, COGS: 5325, Profit: 19266, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 862, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 107750, Discounts: 31466.25, Sales: 76283.75, COGS: 335640, Profit: 259356.25, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3805, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 57075, Discounts: 330.75, Sales: 56744.25, COGS: 2450, Profit: 54294.25, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1415, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 424500, Discounts: 102424.5, Sales: 322075.5, COGS: 948375, Profit: 626299.5, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2231, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 780850, Discounts: 41170.5, Sales: 739679.5, COGS: 339820, Profit: 399859.5, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3649, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 456125, Discounts: 6378.75, Sales: 449746.25, COGS: 68040, Profit: 381706.25, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2948, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 368500, Discounts: 23737.5, Sales: 344762.5, COGS: 253200, Profit: 91562.5, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3395, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1188250, Discounts: 39973.5, Sales: 1148276.5, COGS: 329940, Profit: 818336.5, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2650, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 31800, Discounts: 2112.48, Sales: 29687.52, COGS: 5868, Profit: 23819.52, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 585, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 175500, Discounts: 71793, Sales: 103707, COGS: 664750, Profit: 561043, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1316, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 460600, Discounts: 42572.25, Sales: 418027.75, COGS: 351390, Profit: 66637.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 4459, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 53508, Discounts: 950.4, Sales: 52557.6, COGS: 2640, Profit: 49917.6, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2711, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 813300, Discounts: 50409, Sales: 762891, COGS: 466750, Profit: 296141, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2621, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 31452, Discounts: 2412.72, Sales: 29039.28, COGS: 6702, Profit: 22337.28, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3613, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 54195, Discounts: 1656.45, Sales: 52538.55, COGS: 12270, Profit: 40268.55, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1847, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 230875, Discounts: 9866.25, Sales: 221008.75, COGS: 105240, Profit: 115768.75, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2996, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1048600, Discounts: 65236.5, Sales: 983363.5, COGS: 538460, Profit: 444903.5, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2838, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 993300, Discounts: 39973.5, Sales: 953326.5, COGS: 329940, Profit: 623386.5, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1302, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 19530, Discounts: 1309.5, Sales: 18220.5, COGS: 9700, Profit: 8520.5, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1536, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 30720, Discounts: 3049.2, Sales: 27670.8, COGS: 16940, Profit: 10730.8, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1291, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 25820, Discounts: 1193.4, Sales: 24626.6, COGS: 6630, Profit: 17996.6, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1213, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 8491, Discounts: 515.97, Sales: 7975.03, COGS: 4095, Profit: 3880.03, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2370, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 28440, Discounts: 1706.4, Sales: 26733.6, COGS: 4740, Profit: 21993.6, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1979, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 13853, Discounts: 328.23, Sales: 13524.77, COGS: 2605, Profit: 10919.77, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2879, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 57580, Discounts: 1751.4, Sales: 55828.6, COGS: 9730, Profit: 46098.6, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1707, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 34140, Discounts: 1868.4, Sales: 32271.6, COGS: 10380, Profit: 21891.6, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2933, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 20531, Discounts: 226.8, Sales: 20304.2, COGS: 1800, Profit: 18504.2, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1014, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 12168, Discounts: 2124.36, Sales: 10043.64, COGS: 5901, Profit: 4142.64, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 693, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 10395, Discounts: 3547.8, Sales: 6847.2, COGS: 26280, Profit: 19432.8, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3741, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 26187, Discounts: 226.8, Sales: 25960.2, COGS: 1800, Profit: 24160.2, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3116, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 62320, Discounts: 4827.6, Sales: 57492.4, COGS: 26820, Profit: 30672.4, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 3995, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 27965, Discounts: 328.23, Sales: 27636.77, COGS: 2605, Profit: 25031.77, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 953, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 19060, Discounts: 1868.4, Sales: 17191.6, COGS: 10380, Profit: 6811.6, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2530, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 37950, Discounts: 2201.18, Sales: 35748.82, COGS: 16305, Profit: 19443.82, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2565, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 30780, Discounts: 330.48, Sales: 30449.52, COGS: 918, Profit: 29531.52, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 4297, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 51564, Discounts: 463.2, Sales: 51100.8, COGS: 1158, Profit: 49942.8, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2871, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 20097, Discounts: 1629.6, Sales: 18467.4, COGS: 11640, Profit: 6827.4, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3537, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 42444, Discounts: 463.2, Sales: 41980.8, COGS: 1158, Profit: 40822.8, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1598, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 199750, Discounts: 43068.75, Sales: 156681.25, COGS: 413460, Profit: 256778.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 2616, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 327000, Discounts: 18525, Sales: 308475, COGS: 177840, Profit: 130635, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2836, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 992600, Discounts: 80955, Sales: 911645, COGS: 601380, Profit: 310265, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 4023, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 502875, Discounts: 22550, Sales: 480325, COGS: 216480, Profit: 263845, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3994, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 59910, Discounts: 3108, Sales: 56802, COGS: 20720, Profit: 36082, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2928, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 58560, Discounts: 3908, Sales: 54652, COGS: 19540, Profit: 35112, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2912, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 873600, Discounts: 17730, Sales: 855870, COGS: 147750, Profit: 708120, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3671, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 55065, Discounts: 3250.5, Sales: 51814.5, COGS: 21670, Profit: 30144.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2778, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 55560, Discounts: 482, Sales: 55078, COGS: 2410, Profit: 52668, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 405, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 6075, Discounts: 1021.5, Sales: 5053.5, COGS: 6810, Profit: 1756.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2013, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 30195, Discounts: 765, Sales: 29430, COGS: 5100, Profit: 24330, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2634, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 39510, Discounts: 1185, Sales: 38325, COGS: 7900, Profit: 30425, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 4166, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1458100, Discounts: 22365, Sales: 1435735, COGS: 166140, Profit: 1269595, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 355, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 44375, Discounts: 19950, Sales: 24425, COGS: 191520, Profit: 167095, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2382, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 714600, Discounts: 68820, Sales: 645780, COGS: 573500, Profit: 72280, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 4170, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 83400, Discounts: 482, Sales: 82918, COGS: 2410, Profit: 80508, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 892, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 6244, Discounts: 1865.5, Sales: 4378.5, COGS: 13325, Profit: 8946.5, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2200, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 275000, Discounts: 23950, Sales: 251050, COGS: 229920, Profit: 21130, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3389, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1016700, Discounts: 25590, Sales: 991110, COGS: 213250, Profit: 777860, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 2990, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 373750, Discounts: 4262.5, Sales: 369487.5, COGS: 40920, Profit: 328567.5, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 4013, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 60195, Discounts: 961.5, Sales: 59233.5, COGS: 6410, Profit: 52823.5, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 739, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 258650, Discounts: 98245, Sales: 160405, COGS: 729820, Profit: 569415, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1989, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 596700, Discounts: 12960, Sales: 583740, COGS: 108000, Profit: 475740, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2991, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 897300, Discounts: 68820, Sales: 828480, COGS: 573500, Profit: 254980, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 4237, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 63555, Discounts: 3250.5, Sales: 60304.5, COGS: 21670, Profit: 38634.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1442, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 180250, Discounts: 31612.5, Sales: 148637.5, COGS: 303480, Profit: 154842.5, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2712, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 949200, Discounts: 65450, Sales: 883750, COGS: 486200, Profit: 397550, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1508, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 188500, Discounts: 7237.5, Sales: 181262.5, COGS: 69480, Profit: 111782.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 4245, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1485750, Discounts: 78400, Sales: 1407350, COGS: 582400, Profit: 824950, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2630, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 789000, Discounts: 89790, Sales: 699210, COGS: 748250, Profit: 49040, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1182, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 14184, Discounts: 4224.6, Sales: 9959.4, COGS: 10561.5, Profit: 602.1, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1221, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 24420, Discounts: 4078, Sales: 20342, COGS: 20390, Profit: 48, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 963, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 11556, Discounts: 3088.8, Sales: 8467.2, COGS: 7722, Profit: 745.2, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 3243, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1135050, Discounts: 24745, Sales: 1110305, COGS: 183820, Profit: 926485, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1120, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 16800, Discounts: 3108, Sales: 13692, COGS: 20720, Profit: 7028, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1174, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 352200, Discounts: 25590, Sales: 326610, COGS: 213250, Profit: 113360, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 2541, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 30492, Discounts: 1581.36, Sales: 28910.64, COGS: 3594, Profit: 25316.64, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3246, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 22722, Discounts: 1949.64, Sales: 20772.36, COGS: 12660, Profit: 8112.36, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1531, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 18372, Discounts: 1581.36, Sales: 16790.64, COGS: 3594, Profit: 13196.64, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2526, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 37890, Discounts: 633.6, Sales: 37256.4, COGS: 3840, Profit: 33416.4, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 1136, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 13632, Discounts: 623.04, Sales: 13008.96, COGS: 1416, Profit: 11592.96, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1983, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 13881, Discounts: 1215.83, Sales: 12665.17, COGS: 7895, Profit: 4770.17, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 3259, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 39108, Discounts: 1326.6, Sales: 37781.4, COGS: 3015, Profit: 34766.4, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 3267, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 49005, Discounts: 5279.17, Sales: 43725.82, COGS: 31995, Profit: 11730.82, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 2454, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 29448, Discounts: 623.04, Sales: 28824.96, COGS: 1416, Profit: 27408.96, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 2643, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 31716, Discounts: 2556.84, Sales: 29159.16, COGS: 5811, Profit: 23348.16, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 383, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 134050, Discounts: 30492, Sales: 103558, COGS: 205920, Profit: 102362, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2801, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 840300, Discounts: 92763, Sales: 747537, COGS: 702750, Profit: 44787, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1667, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 208375, Discounts: 33563.75, Sales: 174811.25, COGS: 292920, Profit: 118108.75, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 3539, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 53085, Discounts: 2574, Sales: 50511, COGS: 15600, Profit: 34911, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 4226, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 29582, Discounts: 2083.62, Sales: 27498.38, COGS: 13530, Profit: 13968.38, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2220, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 777000, Discounts: 29491, Sales: 747509, COGS: 199160, Profit: 548349, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 776, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 15520, Discounts: 6582.4, Sales: 8937.6, COGS: 29920, Profit: 20982.4, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 553, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 8295, Discounts: 3559.05, Sales: 4735.95, COGS: 21570, Profit: 16834.05, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2107, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 632100, Discounts: 28809, Sales: 603291, COGS: 218250, Profit: 385041, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2468, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 49360, Discounts: 2468.4, Sales: 46891.6, COGS: 11220, Profit: 35671.6, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1905, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 666750, Discounts: 81023.25, Sales: 585726.75, COGS: 547170, Profit: 38556.75, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3658, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 43896, Discounts: 5314.32, Sales: 38581.68, COGS: 12078, Profit: 26503.68, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 4301, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 51612, Discounts: 3201.66, Sales: 48410.34, COGS: 7276.5, Profit: 41133.84, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2446, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 48920, Discounts: 5266.8, Sales: 43653.2, COGS: 23940, Profit: 19713.2, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 4209, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 63135, Discounts: 3273.6, Sales: 59861.4, COGS: 19840, Profit: 40021.4, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3353, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 419125, Discounts: 33563.75, Sales: 385561.25, COGS: 292920, Profit: 92641.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1401, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 28020, Discounts: 6582.4, Sales: 21437.6, COGS: 29920, Profit: 8482.4, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1865, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 559500, Discounts: 45078, Sales: 514422, COGS: 341500, Profit: 172922, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 463, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 9260, Discounts: 6171, Sales: 3089, COGS: 28050, Profit: 24961, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 4177, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 62655, Discounts: 1080.75, Sales: 61574.25, COGS: 6550, Profit: 55024.25, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2523, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 883050, Discounts: 13244, Sales: 869806, COGS: 89440, Profit: 780366, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1930, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 13510, Discounts: 1392.16, Sales: 12117.84, COGS: 9040, Profit: 3077.84, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1301, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 15612, Discounts: 2288.88, Sales: 13323.12, COGS: 5202, Profit: 8121.12, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 4125, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 515625, Discounts: 7617.5, Sales: 508007.5, COGS: 66480, Profit: 441527.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 607, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 12140, Discounts: 6457, Sales: 5683, COGS: 29350, Profit: 23667, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 478, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 59750, Discounts: 43518.75, Sales: 16231.25, COGS: 379800, Profit: 363568.75, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 4489, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 89780, Discounts: 5783.8, Sales: 83996.2, COGS: 26290, Profit: 57706.2, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1504, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 188000, Discounts: 19703.75, Sales: 168296.25, COGS: 171960, Profit: 3663.75, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 3763, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 470375, Discounts: 13021.25, Sales: 457353.75, COGS: 113640, Profit: 343713.75, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2412, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 844200, Discounts: 13244, Sales: 830956, COGS: 89440, Profit: 741516, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2342, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 35130, Discounts: 3559.05, Sales: 31570.95, COGS: 21570, Profit: 10000.95, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4451, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 31157, Discounts: 292.6, Sales: 30864.4, COGS: 1900, Profit: 28964.4, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3796, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1328600, Discounts: 37212, Sales: 1291388, COGS: 230360, Profit: 1061028, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 2286, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 285750, Discounts: 36240, Sales: 249510, COGS: 289920, Profit: 40410, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3614, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 451750, Discounts: 32340, Sales: 419410, COGS: 258720, Profit: 160690, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1716, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 25740, Discounts: 4840.2, Sales: 20899.8, COGS: 26890, Profit: 5990.2, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1301, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 19515, Discounts: 1218.6, Sales: 18296.4, COGS: 6770, Profit: 11526.4, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 4175, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1252500, Discounts: 63828, Sales: 1188672, COGS: 443250, Profit: 745422, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 975, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 6825, Discounts: 2032.8, Sales: 4792.2, COGS: 12100, Profit: 7307.8, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1154, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 8078, Discounts: 2296.56, Sales: 5781.44, COGS: 13670, Profit: 7888.56, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1873, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 37460, Discounts: 4116, Sales: 33344, COGS: 17150, Profit: 16194, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3766, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1129800, Discounts: 42696, Sales: 1087104, COGS: 296500, Profit: 790604, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3558, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1067400, Discounts: 125820, Sales: 941580, COGS: 873750, Profit: 67830, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3156, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1104600, Discounts: 37212, Sales: 1067388, COGS: 230360, Profit: 837028, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2994, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 374250, Discounts: 32340, Sales: 341910, COGS: 258720, Profit: 83190, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2087, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 41740, Discounts: 2172, Sales: 39568, COGS: 9050, Profit: 30518, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1056, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 21120, Discounts: 4116, Sales: 17004, COGS: 17150, Profit: 146, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1353, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 473550, Discounts: 66948, Sales: 406602, COGS: 414440, Profit: 7838, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 416, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 124800, Discounts: 48924, Sales: 75876, COGS: 339750, Profit: 263874, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3880, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1164000, Discounts: 77400, Sales: 1086600, COGS: 537500, Profit: 549100, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 809, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 283150, Discounts: 50274, Sales: 232876, COGS: 311220, Profit: 78344, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1892, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 28380, Discounts: 684, Sales: 27696, COGS: 3800, Profit: 23896, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2072, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 41440, Discounts: 2959.2, Sales: 38480.8, COGS: 12330, Profit: 26150.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3052, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1068200, Discounts: 58590, Sales: 1009610, COGS: 362700, Profit: 646910, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3121, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1092350, Discounts: 41412, Sales: 1050938, COGS: 256360, Profit: 794578, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2059, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 41180, Discounts: 2172, Sales: 39008, COGS: 9050, Profit: 29958, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4254, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 51048, Discounts: 3036.96, Sales: 48011.04, COGS: 6327, Profit: 41684.04, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1293, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 19395, Discounts: 6974.1, Sales: 12420.9, COGS: 38745, Profit: 26324.1, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1293, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 452550, Discounts: 26166, Sales: 426384, COGS: 161980, Profit: 264404, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 230, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 80500, Discounts: 41412, Sales: 39088, COGS: 256360, Profit: 217272, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1723, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 215375, Discounts: 35805, Sales: 179570, COGS: 286440, Profit: 106870, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 240, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 4800, Discounts: 2959.2, Sales: 1840.8, COGS: 12330, Profit: 10489.2, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2571, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 899850, Discounts: 11340, Sales: 888510, COGS: 70200, Profit: 818310, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1661, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 11627, Discounts: 2874.06, Sales: 8752.94, COGS: 17107.5, Profit: 8354.56, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 4474, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 31318, Discounts: 2296.56, Sales: 29021.44, COGS: 13670, Profit: 15351.44, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 833, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 12495, Discounts: 4586.4, Sales: 7908.6, COGS: 25480, Profit: 17571.4, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 674, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 13480, Discounts: 6051.6, Sales: 7428.4, COGS: 25215, Profit: 17786.6, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 778, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 9336, Discounts: 3831.84, Sales: 5504.16, COGS: 7983, Profit: 2478.84, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1457, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 29140, Discounts: 3674.4, Sales: 25465.6, COGS: 15310, Profit: 10155.6, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3158, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 22106, Discounts: 1252.44, Sales: 20853.56, COGS: 7455, Profit: 13398.56, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 4095, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 81900, Discounts: 3674.4, Sales: 78225.6, COGS: 15310, Profit: 62915.6, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 3170, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 38040, Discounts: 3975.84, Sales: 34064.16, COGS: 8283, Profit: 25781.16, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 493, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 7395, Discounts: 5005.65, Sales: 2389.35, COGS: 25670, Profit: 23280.65, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 3286, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 49290, Discounts: 5005.65, Sales: 44284.35, COGS: 25670, Profit: 18614.35, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 3563, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1247050, Discounts: 41996.5, Sales: 1205053.5, COGS: 239980, Profit: 965073.5, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 4109, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1438150, Discounts: 81445, Sales: 1356705, COGS: 465400, Profit: 891305, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 3653, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 73060, Discounts: 1149.2, Sales: 71910.8, COGS: 4420, Profit: 67490.8, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2203, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 771050, Discounts: 44703.75, Sales: 726346.25, COGS: 255450, Profit: 470896.25, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2924, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 20468, Discounts: 1181.18, Sales: 19286.82, COGS: 6490, Profit: 12796.82, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2650, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 31800, Discounts: 942.24, Sales: 30857.76, COGS: 1812, Profit: 29045.76, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1194, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 23880, Discounts: 5863, Sales: 18017, COGS: 22550, Profit: 4533, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 3366, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 67320, Discounts: 3247.4, Sales: 64072.6, COGS: 12490, Profit: 51582.6, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1325, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 9275, Discounts: 1309.04, Sales: 7965.97, COGS: 7192.5, Profit: 773.47, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4243, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1272900, Discounts: 31473, Sales: 1241427, COGS: 201750, Profit: 1039677, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2887, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 57740, Discounts: 6866.6, Sales: 50873.4, COGS: 26410, Profit: 24463.4, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3839, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 76780, Discounts: 7040.8, Sales: 69739.2, COGS: 27080, Profit: 42659.2, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1863, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 652050, Discounts: 119756, Sales: 532294, COGS: 684320, Profit: 152026, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2858, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 357250, Discounts: 25723.75, Sales: 331526.25, COGS: 189960, Profit: 141566.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2868, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 34416, Discounts: 890.76, Sales: 33525.24, COGS: 1713, Profit: 31812.24, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3805, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 26635, Discounts: 2453.36, Sales: 24181.64, COGS: 13480, Profit: 10701.64, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3914, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 58710, Discounts: 3051.75, Sales: 55658.25, COGS: 15650, Profit: 40008.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 524, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 10480, Discounts: 3247.4, Sales: 7232.6, COGS: 12490, Profit: 5257.4, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3095, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1083250, Discounts: 16243.5, Sales: 1067006.5, COGS: 92820, Profit: 974186.5, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2410, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 28920, Discounts: 1580.28, Sales: 27339.72, COGS: 3039, Profit: 24300.72, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 4263, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 63945, Discounts: 7795.13, Sales: 56149.88, COGS: 39975, Profit: 16174.88, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2239, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 783650, Discounts: 119756, Sales: 663894, COGS: 684320, Profit: 20426, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 569, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 3983, Discounts: 1082.9, Sales: 2900.1, COGS: 5950, Profit: 3049.9, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3889, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 46668, Discounts: 942.24, Sales: 45725.76, COGS: 1812, Profit: 43913.76, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 1378, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 20670, Discounts: 1287, Sales: 19383, COGS: 6600, Profit: 12783, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2253, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 27036, Discounts: 639.6, Sales: 26396.4, COGS: 1230, Profit: 25166.4, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3202, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 960600, Discounts: 101595, Sales: 859005, COGS: 651250, Profit: 207755, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3835, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 46020, Discounts: 1580.28, Sales: 44439.72, COGS: 3039, Profit: 41400.72, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 2487, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 310875, Discounts: 25723.75, Sales: 285151.25, COGS: 189960, Profit: 95191.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4428, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 66420, Discounts: 3051.75, Sales: 63368.25, COGS: 15650, Profit: 47718.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1200, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 150000, Discounts: 26958.75, Sales: 123041.25, COGS: 199080, Profit: 76038.75, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2953, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 20671, Discounts: 1082.9, Sales: 19588.1, COGS: 5950, Profit: 13638.1, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1453, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 17436, Discounts: 639.6, Sales: 16796.4, COGS: 1230, Profit: 15566.4, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 865, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 10380, Discounts: 2761.2, Sales: 7618.8, COGS: 5310, Profit: 2308.8, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1072, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 21440, Discounts: 7221.2, Sales: 14218.8, COGS: 25790, Profit: 11571.2, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1737, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 34740, Discounts: 4880.4, Sales: 29859.6, COGS: 17430, Profit: 12429.6, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1535, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 10745, Discounts: 2936.08, Sales: 7808.92, COGS: 14980, Profit: 7171.08, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2532, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 17724, Discounts: 274.4, Sales: 17449.6, COGS: 1400, Profit: 16049.6, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1765, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 12355, Discounts: 287.14, Sales: 12067.86, COGS: 1465, Profit: 10602.86, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1567, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 10969, Discounts: 2936.08, Sales: 8032.92, COGS: 14980, Profit: 6947.08, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2640, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 39600, Discounts: 583.8, Sales: 39016.2, COGS: 2780, Profit: 36236.2, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3079, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 61580, Discounts: 6798.4, Sales: 54781.6, COGS: 24280, Profit: 30501.6, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4130, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 61950, Discounts: 3710.7, Sales: 58239.3, COGS: 17670, Profit: 40569.3, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2938, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 35256, Discounts: 2340.24, Sales: 32915.76, COGS: 4179, Profit: 28736.76, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3080, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 21560, Discounts: 274.4, Sales: 21285.6, COGS: 1400, Profit: 19885.6, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1530, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 18360, Discounts: 2340.24, Sales: 16019.76, COGS: 4179, Profit: 11840.76, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 3537, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 42444, Discounts: 3385.2, Sales: 39058.8, COGS: 6045, Profit: 33013.8, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 2021, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 606300, Discounts: 33642, Sales: 572658, COGS: 200250, Profit: 372408, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1804, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 225500, Discounts: 17902.5, Sales: 207597.5, COGS: 122760, Profit: 84837.5, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1014, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 304200, Discounts: 62832, Sales: 241368, COGS: 374000, Profit: 132632, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2913, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 873900, Discounts: 42420, Sales: 831480, COGS: 252500, Profit: 578980, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 763, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 11445, Discounts: 3177.3, Sales: 8267.7, COGS: 15130, Profit: 6862.3, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1425, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 21375, Discounts: 4830, Sales: 16545, COGS: 23000, Profit: 6455, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 4357, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 544625, Discounts: 49367.5, Sales: 495257.5, COGS: 338520, Profit: 156737.5, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 2138, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 748300, Discounts: 109147.5, Sales: 639152.5, COGS: 579150, Profit: 60002.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3825, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 1338750, Discounts: 58751, Sales: 1279999, COGS: 311740, Profit: 968259, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 3393, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 1187550, Discounts: 9800, Sales: 1177750, COGS: 52000, Profit: 1125750, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 2215, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 15505, Discounts: 380.24, Sales: 15124.76, COGS: 1940, Profit: 13184.76, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2278, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 15946, Discounts: 1692.46, Sales: 14253.54, COGS: 8635, Profit: 5618.54, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 403, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 6045, Discounts: 4830, Sales: 1215, COGS: 23000, Profit: 21785, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 289, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 5780, Discounts: 728, Sales: 5052, COGS: 2600, Profit: 2452, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 749, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 11235, Discounts: 5187, Sales: 6048, COGS: 24700, Profit: 18652, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 372, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 5580, Discounts: 3660.3, Sales: 1919.7, COGS: 17430, Profit: 15510.3, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3781, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 45372, Discounts: 4895.52, Sales: 40476.48, COGS: 8742, Profit: 31734.48, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1785, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 12495, Discounts: 1696.38, Sales: 10798.62, COGS: 8655, Profit: 2143.62, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4029, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1410150, Discounts: 34300, Sales: 1375850, COGS: 182000, Profit: 1193850, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2813, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 33756, Discounts: 3732.96, Sales: 30023.04, COGS: 6666, Profit: 23357.04, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2150, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 752500, Discounts: 57673, Sales: 694827, COGS: 306020, Profit: 388807, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2093, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 732550, Discounts: 94178, Sales: 638372, COGS: 499720, Profit: 138652, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 4391, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 548875, Discounts: 27562.5, Sales: 521312.5, COGS: 189000, Profit: 332312.5, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2695, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 53900, Discounts: 1696.8, Sales: 52203.2, COGS: 6060, Profit: 46143.2, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1337, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 401100, Discounts: 103320, Sales: 297780, COGS: 615000, Profit: 317220, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2621, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 786300, Discounts: 11298, Sales: 775002, COGS: 67250, Profit: 707752, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3735, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1120500, Discounts: 106512, Sales: 1013988, COGS: 634000, Profit: 379988, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 4320, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 30240, Discounts: 2844.94, Sales: 27395.06, COGS: 14515, Profit: 12880.06, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2828, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 848400, Discounts: 106722, Sales: 741678, COGS: 635250, Profit: 106428, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 2586, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 775800, Discounts: 11298, Sales: 764502, COGS: 67250, Profit: 697252, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1248, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 374400, Discounts: 62832, Sales: 311568, COGS: 374000, Profit: 62432, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 4035, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 1210500, Discounts: 42420, Sales: 1168080, COGS: 252500, Profit: 915580, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 359, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 125650, Discounts: 62769, Sales: 62881, COGS: 333060, Profit: 270179, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 3926, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 1177800, Discounts: 37296, Sales: 1140504, COGS: 222000, Profit: 918504, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 4247, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 530875, Discounts: 49770, Sales: 481105, COGS: 341280, Profit: 139825, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2695, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 32340, Discounts: 4158, Sales: 28182, COGS: 7425, Profit: 20757, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1104, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 16560, Discounts: 3660.3, Sales: 12899.7, COGS: 17430, Profit: 4530.3, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1449, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 17388, Discounts: 4895.52, Sales: 12492.48, COGS: 8742, Profit: 3750.48, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1131, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 7917, Discounts: 1696.38, Sales: 6220.62, COGS: 8655, Profit: 2434.38, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1468, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 10276, Discounts: 1692.46, Sales: 8583.54, COGS: 8635, Profit: 51.46, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1272, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 19080, Discounts: 3927, Sales: 15153, COGS: 18700, Profit: 3547, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1403, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 175375, Discounts: 22012.5, Sales: 153362.5, COGS: 140880, Profit: 12482.5, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2161, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 270125, Discounts: 51881.25, Sales: 218243.75, COGS: 332040, Profit: 113796.25, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1937, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 242125, Discounts: 20343.75, Sales: 221781.25, COGS: 130200, Profit: 91581.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2879, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 863700, Discounts: 24570, Sales: 839130, COGS: 136500, Profit: 702630, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1330, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 26600, Discounts: 3474, Sales: 23126, COGS: 11580, Profit: 11546, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2426, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 36390, Discounts: 3631.5, Sales: 32758.5, COGS: 16140, Profit: 16618.5, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2033, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 14231, Discounts: 2661.75, Sales: 11569.25, COGS: 12675, Profit: 1105.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2029, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 710150, Discounts: 149677.5, Sales: 560472.5, COGS: 741260, Profit: 180787.5, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1049, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 15735, Discounts: 5757.75, Sales: 9977.25, COGS: 25590, Profit: 15612.75, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1062, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 21240, Discounts: 801, Sales: 20439, COGS: 2670, Profit: 17769, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2509, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 313625, Discounts: 20343.75, Sales: 293281.25, COGS: 130200, Profit: 163081.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1743, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 26145, Discounts: 2643.75, Sales: 23501.25, COGS: 11750, Profit: 11751.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3418, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1196300, Discounts: 105367.5, Sales: 1090932.5, COGS: 521820, Profit: 569112.5, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1751, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 612850, Discounts: 112927.5, Sales: 499922.5, COGS: 559260, Profit: 59337.5, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3228, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 38736, Discounts: 1645.2, Sales: 37090.8, COGS: 2742, Profit: 34348.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1105, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 22100, Discounts: 879, Sales: 21221, COGS: 2930, Profit: 18291, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2778, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 33336, Discounts: 900, Sales: 32436, COGS: 1500, Profit: 30936, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1173, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 17595, Discounts: 6358.5, Sales: 11236.5, COGS: 28260, Profit: 17023.5, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3160, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 395000, Discounts: 12431.25, Sales: 382568.75, COGS: 79560, Profit: 303008.75, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 4322, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1296600, Discounts: 115830, Sales: 1180770, COGS: 643500, Profit: 537270, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1901, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 237625, Discounts: 45712.5, Sales: 191912.5, COGS: 292560, Profit: 100647.5, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2980, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 35760, Discounts: 1645.2, Sales: 34114.8, COGS: 2742, Profit: 31372.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4068, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 81360, Discounts: 2596.5, Sales: 78763.5, COGS: 8655, Profit: 70108.5, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2105, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 31575, Discounts: 1107, Sales: 30468, COGS: 4920, Profit: 25548, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1647, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 32940, Discounts: 801, Sales: 32139, COGS: 2670, Profit: 29469, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 235, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 3525, Discounts: 2643.75, Sales: 881.25, COGS: 11750, Profit: 10868.75, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3617, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 452125, Discounts: 55387.5, Sales: 396737.5, COGS: 354480, Profit: 42257.5, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2106, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 263250, Discounts: 10350, Sales: 252900, COGS: 66240, Profit: 186660, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2351, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 47020, Discounts: 879, Sales: 46141, COGS: 2930, Profit: 43211, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1897, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 569100, Discounts: 111375, Sales: 457725, COGS: 618750, Profit: 161025, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 647, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 194100, Discounts: 24570, Sales: 169530, COGS: 136500, Profit: 33030, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 3621, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 25347, Discounts: 1436.4, Sales: 23910.6, COGS: 6840, Profit: 17070.6, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3221, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 22547, Discounts: 759.15, Sales: 21787.85, COGS: 3615, Profit: 18172.85, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 493, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 5916, Discounts: 3250.8, Sales: 2665.2, COGS: 5418, Profit: 2752.8, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), + ]; + super(...newItems.slice(0)); + } + } +} diff --git a/samples/grids/pivot-grid/styling/src/index.css b/samples/grids/pivot-grid/styling/src/index.css new file mode 100644 index 0000000000..8f2c7390a1 --- /dev/null +++ b/samples/grids/pivot-grid/styling/src/index.css @@ -0,0 +1,14 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-pivot-grid { + --header-background: #3b3a3a; + --header-text-color: #ffcd0f; + --content-background: #494949; + --content-text-color: #ffcd0f; + --row-odd-background: #494949; + --row-even-background: #494949; + --row-hover-background: #3b3a3a; + --row-hover-text-color: #ffcd0f; +} + diff --git a/samples/grids/pivot-grid/styling/src/index.tsx b/samples/grids/pivot-grid/styling/src/index.tsx new file mode 100644 index 0000000000..ede97f5c6d --- /dev/null +++ b/samples/grids/pivot-grid/styling/src/index.tsx @@ -0,0 +1,94 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import { IgrPivotGridModule } from 'igniteui-react-grids'; +import { + IgrPivotGrid, + IgrPivotConfiguration, + IgrPivotDimension, + IgrPivotValue, + IgrPivotAggregator, +} from 'igniteui-react-grids'; +import { PivotSalesData } from './PivotSalesData'; +import 'igniteui-react-grids/grids/themes/light/bootstrap.css'; +import './index.css'; + +const mods: any[] = [IgrPivotGridModule]; +mods.forEach((m) => m.register()); + +export default class Sample extends React.Component { + private grid: IgrPivotGrid; + private gridRef(r: IgrPivotGrid) { + this.grid = r; + this.setState({}); + } + private _pivotConfiguration1: IgrPivotConfiguration | null = null; + public get pivotConfiguration1(): IgrPivotConfiguration { + if (this._pivotConfiguration1 == null) { + var pivotConfiguration1: IgrPivotConfiguration = + {} as IgrPivotConfiguration; + + var igrPivotDimension1: IgrPivotDimension = {} as IgrPivotDimension; + igrPivotDimension1.memberName = 'Country'; + igrPivotDimension1.enabled = true; + + pivotConfiguration1.columns = [igrPivotDimension1]; + var igrPivotDimension2: IgrPivotDimension = {} as IgrPivotDimension; + igrPivotDimension2.memberName = 'Product'; + igrPivotDimension2.enabled = true; + + pivotConfiguration1.rows = [igrPivotDimension2]; + var igrPivotValue1: IgrPivotValue = {} as IgrPivotValue; + igrPivotValue1.member = 'Sales'; + igrPivotValue1.enabled = true; + var igrPivotAggregator1: IgrPivotAggregator = {} as IgrPivotAggregator; + igrPivotAggregator1.key = 'MAX'; + igrPivotAggregator1.aggregator = this.pivotSalesDataAggregateMaxSales; + + igrPivotValue1.aggregate = igrPivotAggregator1; + + pivotConfiguration1.values = [igrPivotValue1]; + + this._pivotConfiguration1 = pivotConfiguration1; + } + return this._pivotConfiguration1; + } + + constructor(props: any) { + super(props); + + this.gridRef = this.gridRef.bind(this); + } + + public render(): JSX.Element { + return ( +
+
+ +
+
+ ); + } + + private _pivotSalesData: PivotSalesData = null; + public get pivotSalesData(): PivotSalesData { + if (this._pivotSalesData == null) { + this._pivotSalesData = new PivotSalesData(); + } + return this._pivotSalesData; + } + + public pivotSalesDataAggregateMaxSales(members: any[], data: any[]): any[] { + if (!data) { + return []; + } + return data.map((x) => x.Sales).reduce((a, b) => Math.max(a, b)); + } +} + +// rendering above component in the React DOM +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/grids/pivot-grid/styling/tsconfig.json b/samples/grids/pivot-grid/styling/tsconfig.json new file mode 100644 index 0000000000..8c0d146f95 --- /dev/null +++ b/samples/grids/pivot-grid/styling/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react-jsx", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "**/odatajs-4.0.0.js", + "config-overrides.js" + ], + "include": [ + "src" + ] +} diff --git a/samples/grids/pivot-grid/styling/vite.config.js b/samples/grids/pivot-grid/styling/vite.config.js new file mode 100644 index 0000000000..1744dbc719 --- /dev/null +++ b/samples/grids/pivot-grid/styling/vite.config.js @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + build: { + outDir: 'build' + }, + server: { + open: false + }, +}); \ No newline at end of file From 161277f5a2112908e7a1a5b38b292490807d748c Mon Sep 17 00:00:00 2001 From: Adrian Petrov Date: Wed, 1 Jul 2026 18:20:04 +0300 Subject: [PATCH 10/23] chore(): update pivot data --- .../pivot-grid/styling/src/PivotSalesData.ts | 1214 ++--------------- 1 file changed, 148 insertions(+), 1066 deletions(-) diff --git a/samples/grids/pivot-grid/styling/src/PivotSalesData.ts b/samples/grids/pivot-grid/styling/src/PivotSalesData.ts index 601960bfd1..6eccf5e6ce 100644 --- a/samples/grids/pivot-grid/styling/src/PivotSalesData.ts +++ b/samples/grids/pivot-grid/styling/src/PivotSalesData.ts @@ -1,1073 +1,155 @@ export class PivotSalesDataItem { - public constructor(init: Partial) { - Object.assign(this, init); - } + public constructor(init: Partial) { + Object.assign(this, init); + } - public Country: string; - public Product: string; - public UnitsSold: number; - public ManufacturingPrice: number; - public SalePrice: number; - public GrossSales: number; - public Discounts: number; - public Sales: number; - public COGS: number; - public Profit: number; - public Date: string; - public MonthName: string; - public Year: number; + public Country: string; + public Product: string; + public UnitsSold: number; + public ManufacturingPrice: number; + public SalePrice: number; + public GrossSales: number; + public Discounts: number; + public Sales: number; + public COGS: number; + public Profit: number; + public Date: string; + public MonthName: string; + public Year: number; } export class PivotSalesData extends Array { - public constructor(items: Array | number = -1) { - if (Array.isArray(items)) { - super(...items); - } else { - const newItems = [ - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 501, ManufacturingPrice: 15, SalePrice: 23, GrossSales: 26440, Discounts: null, Sales: 26440, COGS: 16185, Profit: 11255, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1372, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 27440, Discounts: null, Sales: 27440, COGS: 16185, Profit: 11255, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2762, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 55240, Discounts: null, Sales: 55240, COGS: 13210, Profit: 42030, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1464, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 21960, Discounts: null, Sales: 21960, COGS: 21780, Profit: 180, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 719, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 10785, Discounts: null, Sales: 10785, COGS: 8880, Profit: 1905, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3576, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 53640, Discounts: null, Sales: 53640, COGS: 24700, Profit: 28940, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 4422, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1547700, Discounts: null, Sales: 1547700, COGS: 393380, Profit: 1154320, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3649, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 54735, Discounts: null, Sales: 54735, COGS: 9210, Profit: 45525, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4172, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 50064, Discounts: null, Sales: 50064, COGS: 7554, Profit: 42510, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3841, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 76820, Discounts: null, Sales: 76820, COGS: 18990, Profit: 57830, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3726, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 44712, Discounts: null, Sales: 44712, COGS: 4635, Profit: 40077, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2625, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 39375, Discounts: null, Sales: 39375, COGS: 24700, Profit: 14675, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1958, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 244750, Discounts: null, Sales: 244750, COGS: 319860, Profit: 75110, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 3271, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 981300, Discounts: null, Sales: 981300, COGS: 239500, Profit: 741800, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2091, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 14637, Discounts: null, Sales: 14637, COGS: 10730, Profit: 3907, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2825, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 42375, Discounts: null, Sales: 42375, COGS: 6150, Profit: 36225, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2513, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 50260, Discounts: null, Sales: 50260, COGS: 2920, Profit: 47340, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 883, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 13245, Discounts: null, Sales: 13245, COGS: 9740, Profit: 3505, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2087, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 25044, Discounts: null, Sales: 25044, COGS: 7554, Profit: 17490, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2563, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 897050, Discounts: null, Sales: 897050, COGS: 261560, Profit: 635490, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2846, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 34152, Discounts: null, Sales: 34152, COGS: 1101, Profit: 33051, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 997, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 6979, Discounts: null, Sales: 6979, COGS: 4415, Profit: 2564, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2290, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 34350, Discounts: null, Sales: 34350, COGS: 24720, Profit: 9630, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2133, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 14931, Discounts: null, Sales: 14931, COGS: 5715, Profit: 9216, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3617, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 72340, Discounts: null, Sales: 72340, COGS: 18170, Profit: 54170, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1266, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 443100, Discounts: null, Sales: 443100, COGS: 393380, Profit: 49720, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 894, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 6258, Discounts: null, Sales: 6258, COGS: 7465, Profit: 1207, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 2725, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 340625, Discounts: null, Sales: 340625, COGS: 216480, Profit: 124145, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3061, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 36732, Discounts: null, Sales: 36732, COGS: 6483, Profit: 30249, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3958, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1385300, Discounts: null, Sales: 1385300, COGS: 261560, Profit: 1123740, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3920, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 47040, Discounts: null, Sales: 47040, COGS: 4635, Profit: 42405, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3381, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 422625, Discounts: null, Sales: 422625, COGS: 338520, Profit: 84105, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4307, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 1292100, Discounts: null, Sales: 1292100, COGS: 500250, Profit: 791850, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 878, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 10536, Discounts: null, Sales: 10536, COGS: 8514, Profit: 2022, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 496, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 7440, Discounts: null, Sales: 7440, COGS: 21780, Profit: 14340, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3367, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 50505, Discounts: null, Sales: 50505, COGS: 8880, Profit: 41625, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2055, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 616500, Discounts: null, Sales: 616500, COGS: 537750, Profit: 78750, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4041, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 80820, Discounts: null, Sales: 80820, COGS: 18170, Profit: 62650, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 3237, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1132950, Discounts: null, Sales: 1132950, COGS: 715000, Profit: 417950, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 630, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 7560, Discounts: null, Sales: 7560, COGS: 5859, Profit: 1701, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4210, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 526250, Discounts: null, Sales: 526250, COGS: 506340, Profit: 19910, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1127, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 22540, Discounts: null, Sales: 22540, COGS: 18990, Profit: 3550, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3438, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 24066, Discounts: null, Sales: 24066, COGS: 8430, Profit: 15636, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2015, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 24180, Discounts: null, Sales: 24180, COGS: 6423, Profit: 17757, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2534, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 17738, Discounts: null, Sales: 17738, COGS: 5715, Profit: 12023, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1384, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 20760, Discounts: null, Sales: 20760, COGS: 6150, Profit: 14610, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3561, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 24927, Discounts: 276.15, Sales: 24650.85, COGS: 19725, Profit: 4925.85, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1823, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 27345, Discounts: 344.4, Sales: 27000.6, COGS: 22960, Profit: 4040.6, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2795, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 19565, Discounts: 72.1, Sales: 19492.9, COGS: 5150, Profit: 14342.9, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 457, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 3199, Discounts: 44.73, Sales: 3154.27, COGS: 3195, Profit: 40.73, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3785, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 26495, Discounts: 92.82, Sales: 26402.18, COGS: 6630, Profit: 19772.18, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 748, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 8976, Discounts: 222.96, Sales: 8753.04, COGS: 5574, Profit: 3179.04, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1021, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 357350, Discounts: 4235, Sales: 353115, COGS: 314600, Profit: 38515, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2076, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 14532, Discounts: 177.03, Sales: 14354.97, COGS: 12645, Profit: 1709.97, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 4316, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 51792, Discounts: 173.4, Sales: 51618.6, COGS: 4335, Profit: 47283.6, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 4174, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 50088, Discounts: 320.52, Sales: 49767.48, COGS: 8013, Profit: 41754.48, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3736, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1307600, Discounts: 4889.5, Sales: 1302710.5, COGS: 363220, Profit: 939490.5, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1914, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 669900, Discounts: 7542.5, Sales: 662357.5, COGS: 560300, Profit: 102057.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2742, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 41130, Discounts: 332.1, Sales: 40797.9, COGS: 22140, Profit: 18657.9, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1499, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 449700, Discounts: 6903, Sales: 442797, COGS: 575250, Profit: 132453, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3772, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 75440, Discounts: 275.1, Sales: 75164.9, COGS: 13755, Profit: 61409.9, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1112, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 7784, Discounts: 128.1, Sales: 7655.9, COGS: 9150, Profit: 1494.1, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2368, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 35520, Discounts: 227.1, Sales: 35292.9, COGS: 15140, Profit: 20152.9, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1586, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 11102, Discounts: 314.48, Sales: 10787.52, COGS: 22462.5, Profit: 11674.98, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3386, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 423250, Discounts: 908.75, Sales: 422341.25, COGS: 87240, Profit: 335101.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 852, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 106500, Discounts: 983.75, Sales: 105516.25, COGS: 94440, Profit: 11076.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2783, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 347875, Discounts: 2278.75, Sales: 345596.25, COGS: 218760, Profit: 126836.25, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2684, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 40260, Discounts: 112.05, Sales: 40147.95, COGS: 7470, Profit: 32677.95, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4083, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1224900, Discounts: 8715, Sales: 1216185, COGS: 726250, Profit: 489935, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2816, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 985600, Discounts: 7542.5, Sales: 978057.5, COGS: 560300, Profit: 417757.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 4294, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 85880, Discounts: 772.8, Sales: 85107.2, COGS: 38640, Profit: 46467.2, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2856, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 19992, Discounts: 25.34, Sales: 19966.66, COGS: 1810, Profit: 18156.66, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1407, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 175875, Discounts: 1153.75, Sales: 174721.25, COGS: 110760, Profit: 63961.25, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1265, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 8855, Discounts: 18.41, Sales: 8836.59, COGS: 1315, Profit: 7521.59, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3892, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1362200, Discounts: 3302.25, Sales: 1358897.75, COGS: 245310, Profit: 1113587.75, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 3068, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 383500, Discounts: 908.75, Sales: 382591.25, COGS: 87240, Profit: 295351.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2181, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 272625, Discounts: 983.75, Sales: 271641.25, COGS: 94440, Profit: 177201.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1356, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 406800, Discounts: 2958, Sales: 403842, COGS: 246500, Profit: 177201.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1814, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 634900, Discounts: 4889.5, Sales: 630010.5, COGS: 363220, Profit: 266790.5, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1495, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 186875, Discounts: 2180, Sales: 184695, COGS: 209280, Profit: 24585, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1463, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 182875, Discounts: 1856.25, Sales: 181018.75, COGS: 89100, Profit: 91918.75, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 215, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 2580, Discounts: 310.8, Sales: 2269.2, COGS: 3885, Profit: 1615.8, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 566, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 198100, Discounts: 19964, Sales: 178136, COGS: 741520, Profit: 563384, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 3255, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 39060, Discounts: 274.08, Sales: 38785.92, COGS: 3426, Profit: 35359.92, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 772, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 15440, Discounts: 626.4, Sales: 14813.6, COGS: 15660, Profit: 846.4, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1135, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 13620, Discounts: 165.6, Sales: 13454.4, COGS: 2070, Profit: 11384.4, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1193, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 17895, Discounts: 708.9, Sales: 17186.1, COGS: 23630, Profit: 6443.9, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2530, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 759000, Discounts: 5508, Sales: 753492, COGS: 229500, Profit: 523992, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3451, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1035300, Discounts: 10368, Sales: 1024932, COGS: 432000, Profit: 592932, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3059, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 36708, Discounts: 274.08, Sales: 36433.92, COGS: 3426, Profit: 33007.92, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3957, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 494625, Discounts: 1655, Sales: 492970, COGS: 79440, Profit: 413530, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3444, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 41328, Discounts: 310.8, Sales: 41017.2, COGS: 3885, Profit: 37132.2, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3154, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 946200, Discounts: 11496, Sales: 934704, COGS: 479000, Profit: 455704, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4108, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1437800, Discounts: 19964, Sales: 1417836, COGS: 741520, Profit: 676316, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3760, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 470000, Discounts: 6822.5, Sales: 463177.5, COGS: 327480, Profit: 135697.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2334, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 28008, Discounts: 253.2, Sales: 27754.8, COGS: 3165, Profit: 24589.8, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 580, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 6960, Discounts: 260.16, Sales: 6699.84, COGS: 3252, Profit: 3447.84, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2610, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 52200, Discounts: 626.4, Sales: 51573.6, COGS: 15660, Profit: 35913.6, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 1459, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 510650, Discounts: 20139, Sales: 490511, COGS: 748020, Profit: 257509, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3774, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 45288, Discounts: 253.2, Sales: 45034.8, COGS: 3165, Profit: 41869.8, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2572, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 30864, Discounts: 260.16, Sales: 30603.84, COGS: 3252, Profit: 27351.84, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 320, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 40000, Discounts: 1655, Sales: 38345, COGS: 79440, Profit: 41095, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3275, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1146250, Discounts: 20139, Sales: 1126111, COGS: 748020, Profit: 378091, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3582, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 447750, Discounts: 6822.5, Sales: 440927.5, COGS: 327480, Profit: 113447.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4056, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 1216800, Discounts: 1554, Sales: 1215246, COGS: 64750, Profit: 1150496, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2144, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 643200, Discounts: 6606, Sales: 636594, COGS: 275250, Profit: 361344, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3502, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 437750, Discounts: 5690, Sales: 432060, COGS: 273120, Profit: 158940, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 679, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 13580, Discounts: 494.4, Sales: 13085.6, COGS: 12360, Profit: 725.6, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2351, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 47020, Discounts: 376.4, Sales: 46643.6, COGS: 9410, Profit: 37233.6, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2043, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 612900, Discounts: 11496, Sales: 601404, COGS: 479000, Profit: 122404, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 3565, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 445625, Discounts: 15913.13, Sales: 429711.88, COGS: 509220, Profit: 79508.13, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1401, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 28020, Discounts: 1548, Sales: 26472, COGS: 25800, Profit: 672, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2077, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 623100, Discounts: 6201, Sales: 616899, COGS: 172250, Profit: 444649, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 3643, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 43716, Discounts: 700.92, Sales: 43015.08, COGS: 5841, Profit: 37174.08, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2960, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 20720, Discounts: 411.18, Sales: 20308.82, COGS: 9790, Profit: 10518.82, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1201, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 14412, Discounts: 684.36, Sales: 13727.64, COGS: 5703, Profit: 8024.64, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 2321, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 16247, Discounts: 114.24, Sales: 16132.76, COGS: 2720, Profit: 13412.76, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3972, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 496500, Discounts: 4826.25, Sales: 491673.75, COGS: 154440, Profit: 337233.75, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3878, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 484750, Discounts: 6397.5, Sales: 478352.5, COGS: 204720, Profit: 273632.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2278, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 683400, Discounts: 21910.5, Sales: 661489.5, COGS: 608625, Profit: 52864.5, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1075, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 134375, Discounts: 6652.5, Sales: 127722.5, COGS: 212880, Profit: 85157.5, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 4050, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 48600, Discounts: 684.36, Sales: 47915.64, COGS: 5703, Profit: 42212.64, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3035, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 910500, Discounts: 6201, Sales: 904299, COGS: 172250, Profit: 732049, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3636, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 454500, Discounts: 5887.5, Sales: 448612.5, COGS: 188400, Profit: 260212.5, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1379, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 16548, Discounts: 493.02, Sales: 16054.98, COGS: 4108.5, Profit: 11946.48, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4492, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 561500, Discounts: 7533.75, Sales: 553966.25, COGS: 241080, Profit: 312886.25, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1744, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 218000, Discounts: 4826.25, Sales: 213173.75, COGS: 154440, Profit: 58733.75, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2341, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 292625, Discounts: 6397.5, Sales: 286227.5, COGS: 204720, Profit: 81507.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3835, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 479375, Discounts: 7533.75, Sales: 471841.25, COGS: 241080, Profit: 230761.25, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1161, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 348300, Discounts: 25596, Sales: 322704, COGS: 711000, Profit: 388296, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 876, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 10512, Discounts: 689.76, Sales: 9822.24, COGS: 5748, Profit: 4074.24, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1705, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 213125, Discounts: 5887.5, Sales: 207237.5, COGS: 188400, Profit: 18837.5, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1805, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 541500, Discounts: 16866, Sales: 524634, COGS: 468500, Profit: 56134, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 389, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 136150, Discounts: 17241, Sales: 118909, COGS: 426920, Profit: 308011, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1459, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 29180, Discounts: 498.6, Sales: 28681.4, COGS: 8310, Profit: 20371.4, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 4236, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 84720, Discounts: 2310.3, Sales: 82409.7, COGS: 38505, Profit: 43904.7, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3627, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 43524, Discounts: 892.44, Sales: 42631.56, COGS: 7437, Profit: 35194.56, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1756, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 26340, Discounts: 1218.6, Sales: 25121.4, COGS: 20310, Profit: 4811.4, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 307, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 4605, Discounts: 1218.6, Sales: 3386.4, COGS: 20310, Profit: 16923.6, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1222, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 366600, Discounts: 24252, Sales: 342348, COGS: 505250, Profit: 162902, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 489, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 171150, Discounts: 3836, Sales: 167314, COGS: 71240, Profit: 96074, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4133, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 61995, Discounts: 1180.2, Sales: 60814.8, COGS: 19670, Profit: 41144.8, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2743, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 822900, Discounts: 22308, Sales: 800592, COGS: 464750, Profit: 335842, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 4460, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1338000, Discounts: 24252, Sales: 1313748, COGS: 505250, Profit: 808498, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1232, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 154000, Discounts: 5690, Sales: 148310, COGS: 136560, Profit: 11750, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2586, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 18102, Discounts: 1190.28, Sales: 16911.72, COGS: 21255, Profit: 4343.28, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1332, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 166500, Discounts: 3975, Sales: 162525, COGS: 95400, Profit: 67125, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4487, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1346100, Discounts: 16974, Sales: 1329126, COGS: 353625, Profit: 975501, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3862, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1158600, Discounts: 35016, Sales: 1123584, COGS: 729500, Profit: 394084, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1765, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 617750, Discounts: 48300, Sales: 569450, COGS: 897000, Profit: 327550, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3533, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 441625, Discounts: 14940, Sales: 426685, COGS: 358560, Profit: 68125, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2016, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 30240, Discounts: 130.8, Sales: 30109.2, COGS: 2180, Profit: 27929.2, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2938, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 58760, Discounts: 1659.2, Sales: 57100.8, COGS: 20740, Profit: 36360.8, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3352, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 67040, Discounts: 844.8, Sales: 66195.2, COGS: 10560, Profit: 55635.2, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2430, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 850500, Discounts: 3836, Sales: 846664, COGS: 71240, Profit: 775424, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 535, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 66875, Discounts: 5690, Sales: 61185, COGS: 136560, Profit: 75375, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1523, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 18276, Discounts: 703.2, Sales: 17572.8, COGS: 4395, Profit: 13177.8, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1782, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 623700, Discounts: 30478, Sales: 593222, COGS: 566020, Profit: 27202, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 347, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 4164, Discounts: 415.68, Sales: 3748.32, COGS: 2598, Profit: 1150.32, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3509, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1228150, Discounts: 30478, Sales: 1197672, COGS: 566020, Profit: 631652, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2943, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1030050, Discounts: 26110, Sales: 1003940, COGS: 484900, Profit: 519040, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 4037, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 504625, Discounts: 5370, Sales: 499255, COGS: 128880, Profit: 370375, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4146, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1451100, Discounts: 26698, Sales: 1424402, COGS: 495820, Profit: 928582, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 725, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 5075, Discounts: 480.2, Sales: 4594.8, COGS: 6860, Profit: 2265.2, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2325, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 16275, Discounts: 941.15, Sales: 15333.85, COGS: 13445, Profit: 1888.85, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 675, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 8100, Discounts: 1458.6, Sales: 6641.4, COGS: 7293, Profit: 651.6, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2990, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 35880, Discounts: 1458.6, Sales: 34421.4, COGS: 7293, Profit: 27128.4, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1072, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 7504, Discounts: 941.15, Sales: 6562.85, COGS: 13445, Profit: 6882.15, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1048, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 7336, Discounts: 589.05, Sales: 6746.95, COGS: 8415, Profit: 1668.05, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 469, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 5628, Discounts: 673.8, Sales: 4954.2, COGS: 3369, Profit: 1585.2, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 4240, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 50880, Discounts: 1119, Sales: 49761, COGS: 5595, Profit: 44166, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1976, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 23712, Discounts: 669.6, Sales: 23042.4, COGS: 3348, Profit: 19694.4, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1984, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 39680, Discounts: 1563, Sales: 38117, COGS: 15630, Profit: 22487, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 480, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 144000, Discounts: 14865, Sales: 129135, COGS: 247750, Profit: 118615, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1205, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 18075, Discounts: 2093.25, Sales: 15981.75, COGS: 27910, Profit: 11928.25, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2480, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 17360, Discounts: 199.5, Sales: 17160.5, COGS: 2850, Profit: 14310.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 2926, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 20482, Discounts: 870.45, Sales: 19611.55, COGS: 12435, Profit: 7176.55, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3210, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 1123500, Discounts: 24228.75, Sales: 1099271.25, COGS: 359970, Profit: 739301.25, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 3221, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 402625, Discounts: 22668.75, Sales: 379956.25, COGS: 435240, Profit: 55283.75, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 1127, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 13524, Discounts: 1405.2, Sales: 12118.8, COGS: 7026, Profit: 5092.8, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1610, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 32200, Discounts: 1303, Sales: 30897, COGS: 13030, Profit: 17867, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4100, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 512500, Discounts: 18700, Sales: 493800, COGS: 359040, Profit: 134760, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1012, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 126500, Discounts: 14906.25, Sales: 111593.75, COGS: 286200, Profit: 174606.25, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3337, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1001100, Discounts: 24105, Sales: 976995, COGS: 401750, Profit: 575245, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3955, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 27685, Discounts: 814.45, Sales: 26870.55, COGS: 11635, Profit: 15235.55, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4347, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1304100, Discounts: 14865, Sales: 1289235, COGS: 247750, Profit: 1041485, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1548, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 541800, Discounts: 10535, Sales: 531265, COGS: 156520, Profit: 374745, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2153, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 32295, Discounts: 1965, Sales: 30330, COGS: 26200, Profit: 4130, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4126, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 515750, Discounts: 5381.25, Sales: 510368.75, COGS: 103320, Profit: 407048.75, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3376, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 67520, Discounts: 2663, Sales: 64857, COGS: 26630, Profit: 38227, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2244, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 33660, Discounts: 416.25, Sales: 33243.75, COGS: 5550, Profit: 27693.75, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 1360, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 20400, Discounts: 2145.75, Sales: 18254.25, COGS: 28610, Profit: 10355.75, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 279, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 34875, Discounts: 5043.75, Sales: 29831.25, COGS: 96840, Profit: 67008.75, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2521, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 882350, Discounts: 10535, Sales: 871815, COGS: 156520, Profit: 715295, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2433, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 48660, Discounts: 2832, Sales: 45828, COGS: 28320, Profit: 17508, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1738, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 34760, Discounts: 1579, Sales: 33181, COGS: 15790, Profit: 17391, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1106, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 138250, Discounts: 5381.25, Sales: 132868.75, COGS: 103320, Profit: 29548.75, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 213, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 63900, Discounts: 18750, Sales: 45150, COGS: 312500, Profit: 267350, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2929, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 58580, Discounts: 2663, Sales: 55917, COGS: 26630, Profit: 29287, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2389, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 16723, Discounts: 199.5, Sales: 16523.5, COGS: 2850, Profit: 13673.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3086, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 21602, Discounts: 870.45, Sales: 20731.55, COGS: 12435, Profit: 8296.55, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 745, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 260750, Discounts: 23625, Sales: 237125, COGS: 351000, Profit: 113875, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1266, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 443100, Discounts: 9660, Sales: 433440, COGS: 143520, Profit: 289920, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4287, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 1286100, Discounts: 18750, Sales: 1267350, COGS: 312500, Profit: 954850, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3193, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 47895, Discounts: 3420.9, Sales: 44474.1, COGS: 38010, Profit: 6464.1, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1967, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 39340, Discounts: 1341, Sales: 37999, COGS: 11175, Profit: 26824, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 631, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 9465, Discounts: 2559.6, Sales: 6905.4, COGS: 28440, Profit: 21534.6, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3469, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 41628, Discounts: 404.64, Sales: 41223.36, COGS: 1686, Profit: 39537.36, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 3215, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 48225, Discounts: 1827, Sales: 46398, COGS: 20300, Profit: 26098, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1959, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 685650, Discounts: 20580, Sales: 665070, COGS: 254800, Profit: 410270, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2181, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 763350, Discounts: 30660, Sales: 732690, COGS: 379600, Profit: 353090, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2205, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 26460, Discounts: 1960.56, Sales: 24499.44, COGS: 8169, Profit: 16330.44, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1890, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 661500, Discounts: 31416, Sales: 630084, COGS: 388960, Profit: 241124, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2417, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 302125, Discounts: 7140, Sales: 294985, COGS: 114240, Profit: 180745, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1158, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 144750, Discounts: 20662.5, Sales: 124087.5, COGS: 330600, Profit: 206512.5, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 803, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 12045, Discounts: 1377, Sales: 10668, COGS: 15300, Profit: 4632, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3705, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1296750, Discounts: 31416, Sales: 1265334, COGS: 388960, Profit: 876374, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 589, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 4123, Discounts: 629.16, Sales: 3493.84, COGS: 7490, Profit: 3996.16, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3999, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 59985, Discounts: 2559.6, Sales: 57425.4, COGS: 28440, Profit: 28985.4, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 4256, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 29792, Discounts: 629.16, Sales: 29162.84, COGS: 7490, Profit: 21672.84, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2160, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 270000, Discounts: 14906.25, Sales: 255093.75, COGS: 238500, Profit: 16593.75, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 466, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 163100, Discounts: 35259, Sales: 127841, COGS: 436540, Profit: 308699, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1478, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 22170, Discounts: 1978.2, Sales: 20191.8, COGS: 21980, Profit: 1788.2, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3798, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 56970, Discounts: 1568.7, Sales: 55401.3, COGS: 17430, Profit: 37971.3, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 447, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 6705, Discounts: 1037.7, Sales: 5667.3, COGS: 11530, Profit: 5862.7, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 745, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 14900, Discounts: 1201.2, Sales: 13698.8, COGS: 10010, Profit: 3688.8, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 1732, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 12124, Discounts: 559.86, Sales: 11564.14, COGS: 6665, Profit: 4899.14, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1759, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 26385, Discounts: 1037.7, Sales: 25347.3, COGS: 11530, Profit: 13817.3, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 338, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 4056, Discounts: 610.68, Sales: 3445.32, COGS: 2181, Profit: 1264.32, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 3911, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 46932, Discounts: 1582.56, Sales: 45349.44, COGS: 5652, Profit: 39697.44, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 4473, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 53676, Discounts: 1965.6, Sales: 51710.4, COGS: 7020, Profit: 44690.4, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 383, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 4596, Discounts: 1967.28, Sales: 2628.72, COGS: 7026, Profit: 4397.28, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1062, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 15930, Discounts: 1325.1, Sales: 14604.9, COGS: 12620, Profit: 1984.9, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 4083, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 28581, Discounts: 556.15, Sales: 28024.85, COGS: 5675, Profit: 22349.85, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3974, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 27818, Discounts: 268.03, Sales: 27549.97, COGS: 2735, Profit: 24814.97, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3723, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 26061, Discounts: 775.18, Sales: 25285.82, COGS: 7910, Profit: 17375.82, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2435, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 29220, Discounts: 1460.34, Sales: 27759.66, COGS: 5215.5, Profit: 22544.16, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1763, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 12341, Discounts: 775.18, Sales: 11565.82, COGS: 7910, Profit: 3655.82, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 4473, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 31311, Discounts: 556.15, Sales: 30754.85, COGS: 5675, Profit: 25079.85, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1246, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 436100, Discounts: 43144.5, Sales: 392955.5, COGS: 457860, Profit: 64904.5, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1615, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 484500, Discounts: 9408, Sales: 475092, COGS: 112000, Profit: 363092, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 749, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 224700, Discounts: 45801, Sales: 178899, COGS: 545250, Profit: 366351, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1318, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 26360, Discounts: 2766.4, Sales: 23593.6, COGS: 19760, Profit: 3833.6, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 2882, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 864600, Discounts: 45801, Sales: 818799, COGS: 545250, Profit: 273549, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2484, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 745200, Discounts: 35742, Sales: 709458, COGS: 425500, Profit: 283958, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3169, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 950700, Discounts: 9408, Sales: 941292, COGS: 112000, Profit: 829292, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4080, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 510000, Discounts: 30738.75, Sales: 479261.25, COGS: 421560, Profit: 57701.25, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3943, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 59145, Discounts: 2206.05, Sales: 56938.95, COGS: 21010, Profit: 35928.95, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 253, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 5060, Discounts: 2149, Sales: 2911, COGS: 15350, Profit: 12439, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 799, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 239700, Discounts: 34839, Sales: 204861, COGS: 414750, Profit: 209889, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3942, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 78840, Discounts: 852.6, Sales: 77987.4, COGS: 6090, Profit: 71897.4, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2498, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 312250, Discounts: 18261.25, Sales: 293988.75, COGS: 250440, Profit: 43548.75, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 2517, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 50340, Discounts: 2766.4, Sales: 47573.6, COGS: 19760, Profit: 27813.6, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1145, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 343500, Discounts: 28812, Sales: 314688, COGS: 343000, Profit: 28312, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3814, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 45768, Discounts: 2725.38, Sales: 43042.62, COGS: 9733.5, Profit: 33309.12, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1188, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 356400, Discounts: 20139, Sales: 336261, COGS: 239750, Profit: 96511, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 2233, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 669900, Discounts: 57687, Sales: 612213, COGS: 686750, Profit: 74537, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 421, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 52625, Discounts: 14393.75, Sales: 38231.25, COGS: 197400, Profit: 159168.75, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 269, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 94150, Discounts: 70462, Sales: 23688, COGS: 747760, Profit: 724072, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 952, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 19040, Discounts: 1565.2, Sales: 17474.8, COGS: 11180, Profit: 6294.8, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2964, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 889200, Discounts: 28812, Sales: 860388, COGS: 343000, Profit: 517388, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1505, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 10535, Discounts: 273.28, Sales: 10261.72, COGS: 2440, Profit: 7821.72, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1678, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 33560, Discounts: 2051.2, Sales: 31508.8, COGS: 12820, Profit: 18688.8, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4249, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 29743, Discounts: 143.92, Sales: 29599.08, COGS: 1285, Profit: 28314.08, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1677, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 33540, Discounts: 2051.2, Sales: 31488.8, COGS: 12820, Profit: 18668.8, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3051, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 381375, Discounts: 15400, Sales: 365975, COGS: 184800, Profit: 181175, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 3372, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 50580, Discounts: 588, Sales: 49992, COGS: 4900, Profit: 45092, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1686, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 590100, Discounts: 38136, Sales: 551964, COGS: 354120, Profit: 197844, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3086, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 46290, Discounts: 3001.2, Sales: 43288.8, COGS: 25010, Profit: 18278.8, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4150, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 83000, Discounts: 1132.8, Sales: 81867.2, COGS: 7080, Profit: 74787.2, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3027, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 60540, Discounts: 1032, Sales: 59508, COGS: 6450, Profit: 53058, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 4359, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1307700, Discounts: 37488, Sales: 1270212, COGS: 390500, Profit: 879712, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 1589, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 23835, Discounts: 853.2, Sales: 22981.8, COGS: 7110, Profit: 15871.8, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2679, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 334875, Discounts: 11140, Sales: 323735, COGS: 133680, Profit: 190055, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3401, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 23807, Discounts: 705.04, Sales: 23101.96, COGS: 6295, Profit: 16806.96, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2815, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 19705, Discounts: 613.2, Sales: 19091.8, COGS: 5475, Profit: 13616.8, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2964, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 59280, Discounts: 2185.6, Sales: 57094.4, COGS: 13660, Profit: 43434.4, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 4173, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1251900, Discounts: 59040, Sales: 1192860, COGS: 615000, Profit: 577860, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1157, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 8099, Discounts: 379.68, Sales: 7719.32, COGS: 3390, Profit: 4329.32, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3065, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 21455, Discounts: 894.88, Sales: 20560.12, COGS: 7990, Profit: 12570.12, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4080, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 81600, Discounts: 3094.4, Sales: 78505.6, COGS: 19340, Profit: 59165.6, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1713, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 34260, Discounts: 4788.8, Sales: 29471.2, COGS: 29930, Profit: 458.8, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1691, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 591850, Discounts: 38136, Sales: 553714, COGS: 354120, Profit: 199594, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2305, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 27660, Discounts: 574.08, Sales: 27085.92, COGS: 1794, Profit: 25291.92, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3401, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 23807, Discounts: 1627.92, Sales: 22179.08, COGS: 14535, Profit: 7644.08, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2288, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 16016, Discounts: 1309.28, Sales: 14706.72, COGS: 11690, Profit: 3016.72, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 4086, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1225800, Discounts: 15240, Sales: 1210560, COGS: 158750, Profit: 1051810, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2651, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 927850, Discounts: 16086, Sales: 911764, COGS: 149370, Profit: 762394, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3971, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 27797, Discounts: 1309.28, Sales: 26487.72, COGS: 11690, Profit: 14797.72, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2512, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 879200, Discounts: 10668, Sales: 868532, COGS: 99060, Profit: 769472, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2745, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 960750, Discounts: 11816, Sales: 948934, COGS: 109720, Profit: 839214, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1903, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 570900, Discounts: 51216, Sales: 519684, COGS: 533500, Profit: 13816, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2914, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 58280, Discounts: 1132.8, Sales: 57147.2, COGS: 7080, Profit: 50067.2, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1889, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 13223, Discounts: 1627.92, Sales: 11595.08, COGS: 14535, Profit: 2939.92, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1466, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 29320, Discounts: 2185.6, Sales: 27134.4, COGS: 13660, Profit: 13474.4, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 887, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 266100, Discounts: 59040, Sales: 207060, COGS: 615000, Profit: 407940, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 395, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 7900, Discounts: 2432, Sales: 5468, COGS: 15200, Profit: 9732, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1693, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 25395, Discounts: 853.2, Sales: 24541.8, COGS: 7110, Profit: 17431.8, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2649, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 794700, Discounts: 15240, Sales: 779460, COGS: 158750, Profit: 620710, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 3608, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 72160, Discounts: 698.4, Sales: 71461.6, COGS: 4365, Profit: 67096.6, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1073, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 321900, Discounts: 29538, Sales: 292362, COGS: 273500, Profit: 18862, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 2167, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 650100, Discounts: 102667.5, Sales: 547432.5, COGS: 950625, Profit: 403192.5, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1319, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 461650, Discounts: 52479, Sales: 409171, COGS: 433160, Profit: 23989, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1252, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 15024, Discounts: 2506.68, Sales: 12517.32, COGS: 6963, Profit: 5554.32, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1156, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 144500, Discounts: 31466.25, Sales: 113033.75, COGS: 335640, Profit: 222606.25, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1153, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 345900, Discounts: 69255, Sales: 276645, COGS: 641250, Profit: 364605, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2720, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 952000, Discounts: 76135.5, Sales: 875864.5, COGS: 628420, Profit: 247444.5, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3658, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 54870, Discounts: 4961.25, Sales: 49908.75, COGS: 36750, Profit: 13158.75, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2950, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 885000, Discounts: 29538, Sales: 855462, COGS: 273500, Profit: 581962, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1821, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 27315, Discounts: 1656.45, Sales: 25658.55, COGS: 12270, Profit: 13388.55, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1127, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 338100, Discounts: 35748, Sales: 302352, COGS: 331000, Profit: 28648, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 862, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 107750, Discounts: 31466.25, Sales: 76283.75, COGS: 335640, Profit: 259356.25, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3805, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 57075, Discounts: 330.75, Sales: 56744.25, COGS: 2450, Profit: 54294.25, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1415, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 424500, Discounts: 102424.5, Sales: 322075.5, COGS: 948375, Profit: 626299.5, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2231, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 780850, Discounts: 41170.5, Sales: 739679.5, COGS: 339820, Profit: 399859.5, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3649, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 456125, Discounts: 6378.75, Sales: 449746.25, COGS: 68040, Profit: 381706.25, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2948, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 368500, Discounts: 23737.5, Sales: 344762.5, COGS: 253200, Profit: 91562.5, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3395, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1188250, Discounts: 39973.5, Sales: 1148276.5, COGS: 329940, Profit: 818336.5, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2650, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 31800, Discounts: 2112.48, Sales: 29687.52, COGS: 5868, Profit: 23819.52, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 585, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 175500, Discounts: 71793, Sales: 103707, COGS: 664750, Profit: 561043, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1316, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 460600, Discounts: 42572.25, Sales: 418027.75, COGS: 351390, Profit: 66637.75, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 4459, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 53508, Discounts: 950.4, Sales: 52557.6, COGS: 2640, Profit: 49917.6, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2711, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 813300, Discounts: 50409, Sales: 762891, COGS: 466750, Profit: 296141, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3613, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 54195, Discounts: 1656.45, Sales: 52538.55, COGS: 12270, Profit: 40268.55, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1847, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 230875, Discounts: 9866.25, Sales: 221008.75, COGS: 105240, Profit: 115768.75, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2996, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1048600, Discounts: 65236.5, Sales: 983363.5, COGS: 538460, Profit: 444903.5, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2838, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 993300, Discounts: 39973.5, Sales: 953326.5, COGS: 329940, Profit: 623386.5, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1536, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 30720, Discounts: 3049.2, Sales: 27670.8, COGS: 16940, Profit: 10730.8, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1291, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 25820, Discounts: 1193.4, Sales: 24626.6, COGS: 6630, Profit: 17996.6, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1213, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 8491, Discounts: 515.97, Sales: 7975.03, COGS: 4095, Profit: 3880.03, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2370, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 28440, Discounts: 1706.4, Sales: 26733.6, COGS: 4740, Profit: 21993.6, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1979, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 13853, Discounts: 328.23, Sales: 13524.77, COGS: 2605, Profit: 10919.77, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2879, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 57580, Discounts: 1751.4, Sales: 55828.6, COGS: 9730, Profit: 46098.6, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1707, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 34140, Discounts: 1868.4, Sales: 32271.6, COGS: 10380, Profit: 21891.6, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2933, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 20531, Discounts: 226.8, Sales: 20304.2, COGS: 1800, Profit: 18504.2, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1014, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 12168, Discounts: 2124.36, Sales: 10043.64, COGS: 5901, Profit: 4142.64, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 693, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 10395, Discounts: 3547.8, Sales: 6847.2, COGS: 26280, Profit: 19432.8, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3741, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 26187, Discounts: 226.8, Sales: 25960.2, COGS: 1800, Profit: 24160.2, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 3995, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 27965, Discounts: 328.23, Sales: 27636.77, COGS: 2605, Profit: 25031.77, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 953, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 19060, Discounts: 1868.4, Sales: 17191.6, COGS: 10380, Profit: 6811.6, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2530, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 37950, Discounts: 2201.18, Sales: 35748.82, COGS: 16305, Profit: 19443.82, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1372, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 27440, Discounts: null, Sales: 27440, COGS: 16185, Profit: 11255, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2762, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 55240, Discounts: null, Sales: 55240, COGS: 13210, Profit: 42030, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1464, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 21960, Discounts: null, Sales: 21960, COGS: 21780, Profit: 180, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 719, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 10785, Discounts: null, Sales: 10785, COGS: 8880, Profit: 1905, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3576, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 53640, Discounts: null, Sales: 53640, COGS: 24700, Profit: 28940, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 4422, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1547700, Discounts: null, Sales: 1547700, COGS: 393380, Profit: 1154320, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3649, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 54735, Discounts: null, Sales: 54735, COGS: 9210, Profit: 45525, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4172, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 50064, Discounts: null, Sales: 50064, COGS: 7554, Profit: 42510, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3841, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 76820, Discounts: null, Sales: 76820, COGS: 18990, Profit: 57830, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3726, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 44712, Discounts: null, Sales: 44712, COGS: 4635, Profit: 40077, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2625, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 39375, Discounts: null, Sales: 39375, COGS: 24700, Profit: 14675, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1958, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 244750, Discounts: null, Sales: 244750, COGS: 319860, Profit: 75110, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 3271, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 981300, Discounts: null, Sales: 981300, COGS: 239500, Profit: 741800, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2091, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 14637, Discounts: null, Sales: 14637, COGS: 10730, Profit: 3907, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 2530, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 316250, Discounts: null, Sales: 316250, COGS: 41400, Profit: 274850, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2825, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 42375, Discounts: null, Sales: 42375, COGS: 6150, Profit: 36225, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2513, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 50260, Discounts: null, Sales: 50260, COGS: 2920, Profit: 47340, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 883, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 13245, Discounts: null, Sales: 13245, COGS: 9740, Profit: 3505, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2087, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 25044, Discounts: null, Sales: 25044, COGS: 7554, Profit: 17490, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2563, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 897050, Discounts: null, Sales: 897050, COGS: 261560, Profit: 635490, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2846, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 34152, Discounts: null, Sales: 34152, COGS: 1101, Profit: 33051, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 997, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 6979, Discounts: null, Sales: 6979, COGS: 4415, Profit: 2564, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3421, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 51315, Discounts: null, Sales: 51315, COGS: 5490, Profit: 45825, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Marchesa`, UnitsSold: 70000, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 1050000, Discounts: null, Sales: 1050000, COGS: 5490, Profit: 1044510, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2291, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 687300, Discounts: null, Sales: 687300, COGS: 197000, Profit: 490300, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2290, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 34350, Discounts: null, Sales: 34350, COGS: 24720, Profit: 9630, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2133, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 14931, Discounts: null, Sales: 14931, COGS: 5715, Profit: 9216, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3475, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1216250, Discounts: null, Sales: 1216250, COGS: 448500, Profit: 767750, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3686, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 44232, Discounts: null, Sales: 44232, COGS: 2736, Profit: 41496, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3319, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 49785, Discounts: null, Sales: 49785, COGS: 21520, Profit: 28265, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3617, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 72340, Discounts: null, Sales: 72340, COGS: 18170, Profit: 54170, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1266, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 443100, Discounts: null, Sales: 443100, COGS: 393380, Profit: 49720, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 894, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 6258, Discounts: null, Sales: 6258, COGS: 7465, Profit: 1207, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 2725, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 340625, Discounts: null, Sales: 340625, COGS: 216480, Profit: 124145, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3061, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 36732, Discounts: null, Sales: 36732, COGS: 6483, Profit: 30249, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3958, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1385300, Discounts: null, Sales: 1385300, COGS: 261560, Profit: 1123740, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3920, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 47040, Discounts: null, Sales: 47040, COGS: 4635, Profit: 42405, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3381, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 422625, Discounts: null, Sales: 422625, COGS: 338520, Profit: 84105, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1094, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 136750, Discounts: null, Sales: 136750, COGS: 41400, Profit: 95350, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4307, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 1292100, Discounts: null, Sales: 1292100, COGS: 500250, Profit: 791850, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 878, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 10536, Discounts: null, Sales: 10536, COGS: 8514, Profit: 2022, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 496, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 7440, Discounts: null, Sales: 7440, COGS: 21780, Profit: 14340, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3367, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 50505, Discounts: null, Sales: 50505, COGS: 8880, Profit: 41625, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3880, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1358000, Discounts: null, Sales: 1358000, COGS: 397020, Profit: 960980, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2055, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 616500, Discounts: null, Sales: 616500, COGS: 537750, Profit: 78750, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4041, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 80820, Discounts: null, Sales: 80820, COGS: 18170, Profit: 62650, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 3237, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1132950, Discounts: null, Sales: 1132950, COGS: 715000, Profit: 417950, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 630, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 7560, Discounts: null, Sales: 7560, COGS: 5859, Profit: 1701, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4210, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 526250, Discounts: null, Sales: 526250, COGS: 506340, Profit: 19910, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1127, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 22540, Discounts: null, Sales: 22540, COGS: 18990, Profit: 3550, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3438, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 24066, Discounts: null, Sales: 24066, COGS: 8430, Profit: 15636, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2015, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 24180, Discounts: null, Sales: 24180, COGS: 6423, Profit: 17757, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2534, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 17738, Discounts: null, Sales: 17738, COGS: 5715, Profit: 12023, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1384, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 20760, Discounts: null, Sales: 20760, COGS: 6150, Profit: 14610, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3561, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 24927, Discounts: 276.15, Sales: 24650.85, COGS: 19725, Profit: 4925.85, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1823, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 27345, Discounts: 344.4, Sales: 27000.6, COGS: 22960, Profit: 4040.6, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2795, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 19565, Discounts: 72.1, Sales: 19492.9, COGS: 5150, Profit: 14342.9, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 457, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 3199, Discounts: 44.73, Sales: 3154.27, COGS: 3195, Profit: 40.73, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3785, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 26495, Discounts: 92.82, Sales: 26402.18, COGS: 6630, Profit: 19772.18, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 748, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 8976, Discounts: 222.96, Sales: 8753.04, COGS: 5574, Profit: 3179.04, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1021, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 357350, Discounts: 4235, Sales: 353115, COGS: 314600, Profit: 38515, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2076, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 14532, Discounts: 177.03, Sales: 14354.97, COGS: 12645, Profit: 1709.97, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 4316, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 51792, Discounts: 173.4, Sales: 51618.6, COGS: 4335, Profit: 47283.6, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2654, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 331750, Discounts: 412.5, Sales: 331337.5, COGS: 39600, Profit: 291737.5, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 4174, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 50088, Discounts: 320.52, Sales: 49767.48, COGS: 8013, Profit: 41754.48, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1675, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 20100, Discounts: 91.92, Sales: 20008.08, COGS: 2298, Profit: 17710.08, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1572, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 471600, Discounts: 1482, Sales: 470118, COGS: 123500, Profit: 346618, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3736, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1307600, Discounts: 4889.5, Sales: 1302710.5, COGS: 363220, Profit: 939490.5, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1914, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 669900, Discounts: 7542.5, Sales: 662357.5, COGS: 560300, Profit: 102057.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2742, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 41130, Discounts: 332.1, Sales: 40797.9, COGS: 22140, Profit: 18657.9, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1499, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 449700, Discounts: 6903, Sales: 442797, COGS: 575250, Profit: 132453, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3772, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 75440, Discounts: 275.1, Sales: 75164.9, COGS: 13755, Profit: 61409.9, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1112, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 7784, Discounts: 128.1, Sales: 7655.9, COGS: 9150, Profit: 1494.1, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1723, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 516900, Discounts: 7494, Sales: 509406, COGS: 624500, Profit: 115094, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 423, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 52875, Discounts: 828.75, Sales: 52046.25, COGS: 79560, Profit: 27513.75, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2368, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 35520, Discounts: 227.1, Sales: 35292.9, COGS: 15140, Profit: 20152.9, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1586, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 11102, Discounts: 314.48, Sales: 10787.52, COGS: 22462.5, Profit: 11674.98, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3386, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 423250, Discounts: 908.75, Sales: 422341.25, COGS: 87240, Profit: 335101.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 852, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 106500, Discounts: 983.75, Sales: 105516.25, COGS: 94440, Profit: 11076.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2783, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 347875, Discounts: 2278.75, Sales: 345596.25, COGS: 218760, Profit: 126836.25, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2684, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 40260, Discounts: 112.05, Sales: 40147.95, COGS: 7470, Profit: 32677.95, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4393, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 52716, Discounts: 91.92, Sales: 52624.08, COGS: 2298, Profit: 50326.08, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4083, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1224900, Discounts: 8715, Sales: 1216185, COGS: 726250, Profit: 489935, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2816, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 985600, Discounts: 7542.5, Sales: 978057.5, COGS: 560300, Profit: 417757.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 4294, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 85880, Discounts: 772.8, Sales: 85107.2, COGS: 38640, Profit: 46467.2, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2856, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 19992, Discounts: 25.34, Sales: 19966.66, COGS: 1810, Profit: 18156.66, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1407, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 175875, Discounts: 1153.75, Sales: 174721.25, COGS: 110760, Profit: 63961.25, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3850, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 481250, Discounts: 828.75, Sales: 480421.25, COGS: 79560, Profit: 400861.25, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2856, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 19992, Discounts: 146.44, Sales: 19845.56, COGS: 10460, Profit: 9385.56, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1265, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 8855, Discounts: 18.41, Sales: 8836.59, COGS: 1315, Profit: 7521.59, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3892, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1362200, Discounts: 3302.25, Sales: 1358897.75, COGS: 245310, Profit: 1113587.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 3068, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 383500, Discounts: 908.75, Sales: 382591.25, COGS: 87240, Profit: 295351.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2181, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 272625, Discounts: 983.75, Sales: 271641.25, COGS: 94440, Profit: 177201.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1356, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 406800, Discounts: 2958, Sales: 403842, COGS: 246500, Profit: 157342, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 2545, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 763500, Discounts: 1482, Sales: 762018, COGS: 123500, Profit: 638518, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1814, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 634900, Discounts: 4889.5, Sales: 630010.5, COGS: 363220, Profit: 266790.5, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1495, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 186875, Discounts: 2180, Sales: 184695, COGS: 209280, Profit: 24585, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1154, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 13848, Discounts: 238.68, Sales: 13609.32, COGS: 5967, Profit: 7642.32, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 4180, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 62700, Discounts: 48.15, Sales: 62651.85, COGS: 3210, Profit: 59441.85, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1463, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 182875, Discounts: 1856.25, Sales: 181018.75, COGS: 89100, Profit: 91918.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 215, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 2580, Discounts: 310.8, Sales: 2269.2, COGS: 3885, Profit: 1615.8, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 4099, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 1229700, Discounts: 1284, Sales: 1228416, COGS: 53500, Profit: 1174916, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 2660, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 18620, Discounts: 300.3, Sales: 18319.7, COGS: 10725, Profit: 7594.7, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 566, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 198100, Discounts: 19964, Sales: 178136, COGS: 741520, Profit: 563384, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 3255, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 39060, Discounts: 274.08, Sales: 38785.92, COGS: 3426, Profit: 35359.92, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 772, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 15440, Discounts: 626.4, Sales: 14813.6, COGS: 15660, Profit: 846.4, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1135, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 13620, Discounts: 165.6, Sales: 13454.4, COGS: 2070, Profit: 11384.4, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 3826, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 478250, Discounts: 4150, Sales: 474100, COGS: 199200, Profit: 274900, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1193, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 17895, Discounts: 708.9, Sales: 17186.1, COGS: 23630, Profit: 6443.9, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2530, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 759000, Discounts: 5508, Sales: 753492, COGS: 229500, Profit: 523992, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3451, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1035300, Discounts: 10368, Sales: 1024932, COGS: 432000, Profit: 592932, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3059, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 36708, Discounts: 274.08, Sales: 36433.92, COGS: 3426, Profit: 33007.92, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3957, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 494625, Discounts: 1655, Sales: 492970, COGS: 79440, Profit: 413530, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3444, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 41328, Discounts: 310.8, Sales: 41017.2, COGS: 3885, Profit: 37132.2, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4388, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 548500, Discounts: 2022.5, Sales: 546477.5, COGS: 97080, Profit: 449397.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2106, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 263250, Discounts: 5362.5, Sales: 257887.5, COGS: 257400, Profit: 487.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 799, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 9588, Discounts: 428.4, Sales: 9159.6, COGS: 5355, Profit: 3804.6, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3154, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 946200, Discounts: 11496, Sales: 934704, COGS: 479000, Profit: 455704, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4108, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1437800, Discounts: 19964, Sales: 1417836, COGS: 741520, Profit: 676316, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3760, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 470000, Discounts: 6822.5, Sales: 463177.5, COGS: 327480, Profit: 135697.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 377, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 5655, Discounts: 577.5, Sales: 5077.5, COGS: 19250, Profit: 14172.5, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2110, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 14770, Discounts: 281.82, Sales: 14488.18, COGS: 10065, Profit: 4423.18, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2334, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 28008, Discounts: 253.2, Sales: 27754.8, COGS: 3165, Profit: 24589.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 580, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 6960, Discounts: 260.16, Sales: 6699.84, COGS: 3252, Profit: 3447.84, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2610, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 52200, Discounts: 626.4, Sales: 51573.6, COGS: 15660, Profit: 35913.6, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 1598, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 559300, Discounts: 20762, Sales: 538538, COGS: 771160, Profit: 232622, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 1459, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 510650, Discounts: 20139, Sales: 490511, COGS: 748020, Profit: 257509, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3284, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 410500, Discounts: 2022.5, Sales: 408477.5, COGS: 97080, Profit: 311397.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 1197, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 149625, Discounts: 5362.5, Sales: 144262.5, COGS: 257400, Profit: 113137.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3774, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 45288, Discounts: 253.2, Sales: 45034.8, COGS: 3165, Profit: 41869.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2303, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 46060, Discounts: 217.6, Sales: 45842.4, COGS: 5440, Profit: 40402.4, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2572, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 30864, Discounts: 260.16, Sales: 30603.84, COGS: 3252, Profit: 27351.84, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 320, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 40000, Discounts: 1655, Sales: 38345, COGS: 79440, Profit: 41095, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2126, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 637800, Discounts: 1284, Sales: 636516, COGS: 53500, Profit: 583016, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3275, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1146250, Discounts: 20139, Sales: 1126111, COGS: 748020, Profit: 378091, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3582, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 447750, Discounts: 6822.5, Sales: 440927.5, COGS: 327480, Profit: 113447.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 783, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 274050, Discounts: 1862, Sales: 272188, COGS: 69160, Profit: 203028, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1202, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 420700, Discounts: 13580, Sales: 407120, COGS: 504400, Profit: 97280, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4056, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 1216800, Discounts: 1554, Sales: 1215246, COGS: 64750, Profit: 1150496, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2144, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 643200, Discounts: 6606, Sales: 636594, COGS: 275250, Profit: 361344, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3502, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 437750, Discounts: 5690, Sales: 432060, COGS: 273120, Profit: 158940, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1397, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 488950, Discounts: 20762, Sales: 468188, COGS: 771160, Profit: 302972, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 679, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 13580, Discounts: 494.4, Sales: 13085.6, COGS: 12360, Profit: 725.6, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2351, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 47020, Discounts: 376.4, Sales: 46643.6, COGS: 9410, Profit: 37233.6, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2043, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 612900, Discounts: 11496, Sales: 601404, COGS: 479000, Profit: 122404, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 3565, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 445625, Discounts: 15913.13, Sales: 429711.88, COGS: 509220, Profit: 79508.13, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1401, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 28020, Discounts: 1548, Sales: 26472, COGS: 25800, Profit: 672, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2077, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 623100, Discounts: 6201, Sales: 616899, COGS: 172250, Profit: 444649, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 3643, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 43716, Discounts: 700.92, Sales: 43015.08, COGS: 5841, Profit: 37174.08, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1105, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 13260, Discounts: 326.88, Sales: 12933.12, COGS: 2724, Profit: 10209.12, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2960, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 20720, Discounts: 411.18, Sales: 20308.82, COGS: 9790, Profit: 10518.82, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1201, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 14412, Discounts: 684.36, Sales: 13727.64, COGS: 5703, Profit: 8024.64, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 2321, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 16247, Discounts: 114.24, Sales: 16132.76, COGS: 2720, Profit: 13412.76, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3640, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 1274000, Discounts: 18868.5, Sales: 1255131.5, COGS: 467220, Profit: 787911.5, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3972, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 496500, Discounts: 4826.25, Sales: 491673.75, COGS: 154440, Profit: 337233.75, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3878, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 484750, Discounts: 6397.5, Sales: 478352.5, COGS: 204720, Profit: 273632.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2278, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 683400, Discounts: 21910.5, Sales: 661489.5, COGS: 608625, Profit: 52864.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1075, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 134375, Discounts: 6652.5, Sales: 127722.5, COGS: 212880, Profit: 85157.5, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 4050, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 48600, Discounts: 684.36, Sales: 47915.64, COGS: 5703, Profit: 42212.64, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3035, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 910500, Discounts: 6201, Sales: 904299, COGS: 172250, Profit: 732049, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3636, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 454500, Discounts: 5887.5, Sales: 448612.5, COGS: 188400, Profit: 260212.5, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1379, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 16548, Discounts: 493.02, Sales: 16054.98, COGS: 4108.5, Profit: 11946.48, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4492, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 561500, Discounts: 7533.75, Sales: 553966.25, COGS: 241080, Profit: 312886.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 764, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 11460, Discounts: 875.25, Sales: 10584.75, COGS: 19450, Profit: 8865.25, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1744, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 218000, Discounts: 4826.25, Sales: 213173.75, COGS: 154440, Profit: 58733.75, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2341, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 292625, Discounts: 6397.5, Sales: 286227.5, COGS: 204720, Profit: 81507.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3835, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 479375, Discounts: 7533.75, Sales: 471841.25, COGS: 241080, Profit: 230761.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1161, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 348300, Discounts: 25596, Sales: 322704, COGS: 711000, Profit: 388296, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 876, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 10512, Discounts: 689.76, Sales: 9822.24, COGS: 5748, Profit: 4074.24, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1705, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 213125, Discounts: 5887.5, Sales: 207237.5, COGS: 188400, Profit: 18837.5, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1805, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 541500, Discounts: 16866, Sales: 524634, COGS: 468500, Profit: 56134, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 389, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 136150, Discounts: 17241, Sales: 118909, COGS: 426920, Profit: 308011, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2745, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 41175, Discounts: 875.25, Sales: 40299.75, COGS: 19450, Profit: 20849.75, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1459, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 29180, Discounts: 498.6, Sales: 28681.4, COGS: 8310, Profit: 20371.4, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3938, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 27566, Discounts: 369.6, Sales: 27196.4, COGS: 8800, Profit: 18396.4, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 4236, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 84720, Discounts: 2310.3, Sales: 82409.7, COGS: 38505, Profit: 43904.7, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3627, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 43524, Discounts: 892.44, Sales: 42631.56, COGS: 7437, Profit: 35194.56, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1756, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 26340, Discounts: 1218.6, Sales: 25121.4, COGS: 20310, Profit: 4811.4, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 307, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 4605, Discounts: 1218.6, Sales: 3386.4, COGS: 20310, Profit: 16923.6, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 4489, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 67335, Discounts: 1356.6, Sales: 65978.4, COGS: 22610, Profit: 43368.4, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2167, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 43340, Discounts: 588.8, Sales: 42751.2, COGS: 7360, Profit: 35391.2, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1137, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 7959, Discounts: 798.28, Sales: 7160.72, COGS: 14255, Profit: 7094.28, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1222, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 366600, Discounts: 24252, Sales: 342348, COGS: 505250, Profit: 162902, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 489, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 171150, Discounts: 3836, Sales: 167314, COGS: 71240, Profit: 96074, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4133, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 61995, Discounts: 1180.2, Sales: 60814.8, COGS: 19670, Profit: 41144.8, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2743, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 822900, Discounts: 22308, Sales: 800592, COGS: 464750, Profit: 335842, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 3699, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 25893, Discounts: 798.28, Sales: 25094.72, COGS: 14255, Profit: 10839.72, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 4460, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1338000, Discounts: 24252, Sales: 1313748, COGS: 505250, Profit: 808498, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1232, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 154000, Discounts: 5690, Sales: 148310, COGS: 136560, Profit: 11750, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2586, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 18102, Discounts: 1190.28, Sales: 16911.72, COGS: 21255, Profit: 4343.28, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1332, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 166500, Discounts: 3975, Sales: 162525, COGS: 95400, Profit: 67125, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4487, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1346100, Discounts: 16974, Sales: 1329126, COGS: 353625, Profit: 975501, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3862, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1158600, Discounts: 35016, Sales: 1123584, COGS: 729500, Profit: 394084, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1765, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 617750, Discounts: 48300, Sales: 569450, COGS: 897000, Profit: 327550, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3533, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 441625, Discounts: 14940, Sales: 426685, COGS: 358560, Profit: 68125, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2016, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 30240, Discounts: 130.8, Sales: 30109.2, COGS: 2180, Profit: 27929.2, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2938, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 58760, Discounts: 1659.2, Sales: 57100.8, COGS: 20740, Profit: 36360.8, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3352, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 67040, Discounts: 844.8, Sales: 66195.2, COGS: 10560, Profit: 55635.2, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4409, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 66135, Discounts: 402.6, Sales: 65732.4, COGS: 6710, Profit: 59022.4, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3323, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 49845, Discounts: 908.4, Sales: 48936.6, COGS: 15140, Profit: 33796.6, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2430, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 850500, Discounts: 3836, Sales: 846664, COGS: 71240, Profit: 775424, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 535, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 66875, Discounts: 5690, Sales: 61185, COGS: 136560, Profit: 75375, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1523, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 18276, Discounts: 703.2, Sales: 17572.8, COGS: 4395, Profit: 13177.8, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3631, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 72620, Discounts: 2116.8, Sales: 70503.2, COGS: 26460, Profit: 44043.2, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1782, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 623700, Discounts: 30478, Sales: 593222, COGS: 566020, Profit: 27202, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 347, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 4164, Discounts: 415.68, Sales: 3748.32, COGS: 2598, Profit: 1150.32, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 4147, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1451450, Discounts: 4886, Sales: 1446564, COGS: 90740, Profit: 1355824, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3509, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1228150, Discounts: 30478, Sales: 1197672, COGS: 566020, Profit: 631652, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 2774, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 41610, Discounts: 908.4, Sales: 40701.6, COGS: 15140, Profit: 25561.6, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2943, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1030050, Discounts: 26110, Sales: 1003940, COGS: 484900, Profit: 519040, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 4037, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 504625, Discounts: 5370, Sales: 499255, COGS: 128880, Profit: 370375, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4146, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1451100, Discounts: 26698, Sales: 1424402, COGS: 495820, Profit: 928582, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 4123, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 61845, Discounts: 402.6, Sales: 61442.4, COGS: 6710, Profit: 54732.4, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1337, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 467950, Discounts: 24892, Sales: 443058, COGS: 462280, Profit: 19222, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 599, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 4193, Discounts: 405.65, Sales: 3787.35, COGS: 5795, Profit: 2007.65, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 725, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 5075, Discounts: 480.2, Sales: 4594.8, COGS: 6860, Profit: 2265.2, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 477, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 3339, Discounts: 822.15, Sales: 2516.85, COGS: 11745, Profit: 9228.15, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2325, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 16275, Discounts: 941.15, Sales: 15333.85, COGS: 13445, Profit: 1888.85, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 675, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 8100, Discounts: 1458.6, Sales: 6641.4, COGS: 7293, Profit: 651.6, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2990, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 35880, Discounts: 1458.6, Sales: 34421.4, COGS: 7293, Profit: 27128.4, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1072, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 7504, Discounts: 941.15, Sales: 6562.85, COGS: 13445, Profit: 6882.15, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1048, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 7336, Discounts: 589.05, Sales: 6746.95, COGS: 8415, Profit: 1668.05, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 469, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 5628, Discounts: 673.8, Sales: 4954.2, COGS: 3369, Profit: 1585.2, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 804, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 5628, Discounts: 405.65, Sales: 5222.35, COGS: 5795, Profit: 572.65, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 4240, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 50880, Discounts: 1119, Sales: 49761, COGS: 5595, Profit: 44166, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1976, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 23712, Discounts: 669.6, Sales: 23042.4, COGS: 3348, Profit: 19694.4, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1984, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 39680, Discounts: 1563, Sales: 38117, COGS: 15630, Profit: 22487, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 480, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 144000, Discounts: 14865, Sales: 129135, COGS: 247750, Profit: 118615, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 3551, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 24857, Discounts: 355.6, Sales: 24501.4, COGS: 5080, Profit: 19421.4, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1205, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 18075, Discounts: 2093.25, Sales: 15981.75, COGS: 27910, Profit: 11928.25, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2480, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 17360, Discounts: 199.5, Sales: 17160.5, COGS: 2850, Profit: 14310.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 2926, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 20482, Discounts: 870.45, Sales: 19611.55, COGS: 12435, Profit: 7176.55, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3210, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 1123500, Discounts: 24228.75, Sales: 1099271.25, COGS: 359970, Profit: 739301.25, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 3221, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 402625, Discounts: 22668.75, Sales: 379956.25, COGS: 435240, Profit: 55283.75, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2389, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 836150, Discounts: 12600, Sales: 823550, COGS: 187200, Profit: 636350, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 1127, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 13524, Discounts: 1405.2, Sales: 12118.8, COGS: 7026, Profit: 5092.8, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 319, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 95700, Discounts: 16500, Sales: 79200, COGS: 275000, Profit: 195800, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1610, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 32200, Discounts: 1303, Sales: 30897, COGS: 13030, Profit: 17867, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4100, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 512500, Discounts: 18700, Sales: 493800, COGS: 359040, Profit: 134760, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1012, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 126500, Discounts: 14906.25, Sales: 111593.75, COGS: 286200, Profit: 174606.25, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3337, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1001100, Discounts: 24105, Sales: 976995, COGS: 401750, Profit: 575245, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3955, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 27685, Discounts: 814.45, Sales: 26870.55, COGS: 11635, Profit: 15235.55, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4347, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1304100, Discounts: 14865, Sales: 1289235, COGS: 247750, Profit: 1041485, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1548, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 541800, Discounts: 10535, Sales: 531265, COGS: 156520, Profit: 374745, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2153, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 32295, Discounts: 1965, Sales: 30330, COGS: 26200, Profit: 4130, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3789, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1326150, Discounts: 21490, Sales: 1304660, COGS: 319280, Profit: 985380, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4364, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 87280, Discounts: 1389, Sales: 85891, COGS: 13890, Profit: 72001, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4126, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 515750, Discounts: 5381.25, Sales: 510368.75, COGS: 103320, Profit: 407048.75, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1343, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 167875, Discounts: 4400, Sales: 163475, COGS: 84480, Profit: 78995, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 245, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 4900, Discounts: 1802, Sales: 3098, COGS: 18020, Profit: 14922, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3376, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 67520, Discounts: 2663, Sales: 64857, COGS: 26630, Profit: 38227, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1401, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 9807, Discounts: 747.6, Sales: 9059.4, COGS: 10680, Profit: 1620.6, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3483, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 52245, Discounts: 1587, Sales: 50658, COGS: 21160, Profit: 29498, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2244, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 33660, Discounts: 416.25, Sales: 33243.75, COGS: 5550, Profit: 27693.75, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 1360, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 20400, Discounts: 2145.75, Sales: 18254.25, COGS: 28610, Profit: 10355.75, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 279, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 34875, Discounts: 5043.75, Sales: 29831.25, COGS: 96840, Profit: 67008.75, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2521, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 882350, Discounts: 10535, Sales: 871815, COGS: 156520, Profit: 715295, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2433, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 48660, Discounts: 2832, Sales: 45828, COGS: 28320, Profit: 17508, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1738, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 34760, Discounts: 1579, Sales: 33181, COGS: 15790, Profit: 17391, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1106, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 138250, Discounts: 5381.25, Sales: 132868.75, COGS: 103320, Profit: 29548.75, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3379, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 422375, Discounts: 4400, Sales: 417975, COGS: 84480, Profit: 333495, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1221, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 24420, Discounts: 1033, Sales: 23387, COGS: 10330, Profit: 13057, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 213, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 63900, Discounts: 18750, Sales: 45150, COGS: 312500, Profit: 267350, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3335, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 66700, Discounts: 1389, Sales: 65311, COGS: 13890, Profit: 51421, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1260, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 25200, Discounts: 1265, Sales: 23935, COGS: 12650, Profit: 11285, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3034, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 60680, Discounts: 2297, Sales: 58383, COGS: 22970, Profit: 35413, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2929, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 58580, Discounts: 2663, Sales: 55917, COGS: 26630, Profit: 29287, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2389, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 16723, Discounts: 199.5, Sales: 16523.5, COGS: 2850, Profit: 13673.5, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3086, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 21602, Discounts: 870.45, Sales: 20731.55, COGS: 12435, Profit: 8296.55, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 745, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 260750, Discounts: 23625, Sales: 237125, COGS: 351000, Profit: 113875, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1266, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 443100, Discounts: 9660, Sales: 433440, COGS: 143520, Profit: 289920, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 3790, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1326500, Discounts: 21490, Sales: 1305010, COGS: 319280, Profit: 985730, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4287, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 1286100, Discounts: 18750, Sales: 1267350, COGS: 312500, Profit: 954850, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3193, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 47895, Discounts: 3420.9, Sales: 44474.1, COGS: 38010, Profit: 6464.1, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1967, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 39340, Discounts: 1341, Sales: 37999, COGS: 11175, Profit: 26824, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 631, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 9465, Discounts: 2559.6, Sales: 6905.4, COGS: 28440, Profit: 21534.6, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3469, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 41628, Discounts: 404.64, Sales: 41223.36, COGS: 1686, Profit: 39537.36, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 570, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 6840, Discounts: 1655.28, Sales: 5184.72, COGS: 6897, Profit: 1712.28, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 3215, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 48225, Discounts: 1827, Sales: 46398, COGS: 20300, Profit: 26098, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 3754, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 26278, Discounts: 110.46, Sales: 26167.54, COGS: 1315, Profit: 24852.54, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2187, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 273375, Discounts: 6652.5, Sales: 266722.5, COGS: 106440, Profit: 160282.5, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1959, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 685650, Discounts: 20580, Sales: 665070, COGS: 254800, Profit: 410270, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2181, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 763350, Discounts: 30660, Sales: 732690, COGS: 379600, Profit: 353090, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3559, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 24913, Discounts: 589.26, Sales: 24323.74, COGS: 7015, Profit: 17308.74, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2205, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 26460, Discounts: 1960.56, Sales: 24499.44, COGS: 8169, Profit: 16330.44, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1890, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 661500, Discounts: 31416, Sales: 630084, COGS: 388960, Profit: 241124, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1296, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 15552, Discounts: 1655.28, Sales: 13896.72, COGS: 6897, Profit: 6999.72, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 775, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 271250, Discounts: 15267, Sales: 255983, COGS: 189020, Profit: 66963, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2417, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 302125, Discounts: 7140, Sales: 294985, COGS: 114240, Profit: 180745, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1158, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 144750, Discounts: 20662.5, Sales: 124087.5, COGS: 330600, Profit: 206512.5, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 803, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 12045, Discounts: 1377, Sales: 10668, COGS: 15300, Profit: 4632, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3705, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1296750, Discounts: 31416, Sales: 1265334, COGS: 388960, Profit: 876374, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 589, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 4123, Discounts: 629.16, Sales: 3493.84, COGS: 7490, Profit: 3996.16, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3797, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1139100, Discounts: 21978, Sales: 1117122, COGS: 305250, Profit: 811872, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1321, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 462350, Discounts: 43596, Sales: 418754, COGS: 539760, Profit: 121006, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3999, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 59985, Discounts: 2559.6, Sales: 57425.4, COGS: 28440, Profit: 28985.4, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 4256, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 29792, Discounts: 629.16, Sales: 29162.84, COGS: 7490, Profit: 21672.84, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1643, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 492900, Discounts: 21978, Sales: 470922, COGS: 305250, Profit: 165672, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1912, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 38240, Discounts: 1347.6, Sales: 36892.4, COGS: 11230, Profit: 25662.4, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1610, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 483000, Discounts: 43848, Sales: 439152, COGS: 609000, Profit: 169848, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2160, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 270000, Discounts: 14906.25, Sales: 255093.75, COGS: 238500, Profit: 16593.75, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 466, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 163100, Discounts: 35259, Sales: 127841, COGS: 436540, Profit: 308699, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 328, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 114800, Discounts: 15267, Sales: 99533, COGS: 189020, Profit: 89487, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 4099, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 28693, Discounts: 589.26, Sales: 28103.74, COGS: 7015, Profit: 21088.74, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 990, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 346500, Discounts: 43596, Sales: 302904, COGS: 539760, Profit: 236856, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1433, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 28660, Discounts: 2108.4, Sales: 26551.6, COGS: 17570, Profit: 8981.6, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1478, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 22170, Discounts: 1978.2, Sales: 20191.8, COGS: 21980, Profit: 1788.2, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3798, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 56970, Discounts: 1568.7, Sales: 55401.3, COGS: 17430, Profit: 37971.3, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 447, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 6705, Discounts: 1037.7, Sales: 5667.3, COGS: 11530, Profit: 5862.7, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1711, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 34220, Discounts: 2108.4, Sales: 32111.6, COGS: 17570, Profit: 14541.6, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 745, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 14900, Discounts: 1201.2, Sales: 13698.8, COGS: 10010, Profit: 3688.8, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 1732, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 12124, Discounts: 559.86, Sales: 11564.14, COGS: 6665, Profit: 4899.14, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1759, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 26385, Discounts: 1037.7, Sales: 25347.3, COGS: 11530, Profit: 13817.3, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 338, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 4056, Discounts: 610.68, Sales: 3445.32, COGS: 2181, Profit: 1264.32, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 3911, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 46932, Discounts: 1582.56, Sales: 45349.44, COGS: 5652, Profit: 39697.44, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3691, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 73820, Discounts: 2567.6, Sales: 71252.4, COGS: 18340, Profit: 52912.4, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 4473, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 53676, Discounts: 1965.6, Sales: 51710.4, COGS: 7020, Profit: 44690.4, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 383, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 4596, Discounts: 1967.28, Sales: 2628.72, COGS: 7026, Profit: 4397.28, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3105, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 21735, Discounts: 505.19, Sales: 21229.81, COGS: 5155, Profit: 16074.81, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1062, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 15930, Discounts: 1325.1, Sales: 14604.9, COGS: 12620, Profit: 1984.9, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 4083, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 28581, Discounts: 556.15, Sales: 28024.85, COGS: 5675, Profit: 22349.85, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3974, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 27818, Discounts: 268.03, Sales: 27549.97, COGS: 2735, Profit: 24814.97, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3723, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 26061, Discounts: 775.18, Sales: 25285.82, COGS: 7910, Profit: 17375.82, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2435, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 29220, Discounts: 1460.34, Sales: 27759.66, COGS: 5215.5, Profit: 22544.16, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1678, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 20136, Discounts: 1860.6, Sales: 18275.4, COGS: 6645, Profit: 11630.4, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1763, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 12341, Discounts: 775.18, Sales: 11565.82, COGS: 7910, Profit: 3655.82, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 4473, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 31311, Discounts: 556.15, Sales: 30754.85, COGS: 5675, Profit: 25079.85, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1246, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 436100, Discounts: 43144.5, Sales: 392955.5, COGS: 457860, Profit: 64904.5, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1615, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 484500, Discounts: 9408, Sales: 475092, COGS: 112000, Profit: 363092, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 749, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 224700, Discounts: 45801, Sales: 178899, COGS: 545250, Profit: 366351, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1318, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 26360, Discounts: 2766.4, Sales: 23593.6, COGS: 19760, Profit: 3833.6, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 2882, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 864600, Discounts: 45801, Sales: 818799, COGS: 545250, Profit: 273549, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3039, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 379875, Discounts: 21875, Sales: 358000, COGS: 300000, Profit: 58000, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2484, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 745200, Discounts: 35742, Sales: 709458, COGS: 425500, Profit: 283958, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3169, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 950700, Discounts: 9408, Sales: 941292, COGS: 112000, Profit: 829292, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4080, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 510000, Discounts: 30738.75, Sales: 479261.25, COGS: 421560, Profit: 57701.25, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3943, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 59145, Discounts: 2206.05, Sales: 56938.95, COGS: 21010, Profit: 35928.95, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 784, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 11760, Discounts: 3077.55, Sales: 8682.45, COGS: 29310, Profit: 20627.55, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 253, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 5060, Discounts: 2149, Sales: 2911, COGS: 15350, Profit: 12439, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1316, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 394800, Discounts: 23583, Sales: 371217, COGS: 280750, Profit: 90467, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 808, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 242400, Discounts: 29484, Sales: 212916, COGS: 351000, Profit: 138084, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3295, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 39540, Discounts: 2320.92, Sales: 37219.08, COGS: 8289, Profit: 28930.08, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 520, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 3640, Discounts: 1041.25, Sales: 2598.75, COGS: 10625, Profit: 8026.25, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 799, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 239700, Discounts: 34839, Sales: 204861, COGS: 414750, Profit: 209889, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3942, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 78840, Discounts: 852.6, Sales: 77987.4, COGS: 6090, Profit: 71897.4, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2498, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 312250, Discounts: 18261.25, Sales: 293988.75, COGS: 250440, Profit: 43548.75, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 2517, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 50340, Discounts: 2766.4, Sales: 47573.6, COGS: 19760, Profit: 27813.6, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3182, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 63640, Discounts: 1989.4, Sales: 61650.6, COGS: 14210, Profit: 47440.6, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1145, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 343500, Discounts: 28812, Sales: 314688, COGS: 343000, Profit: 28312, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 895, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 17900, Discounts: 823.2, Sales: 17076.8, COGS: 5880, Profit: 11196.8, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3814, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 45768, Discounts: 2725.38, Sales: 43042.62, COGS: 9733.5, Profit: 33309.12, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1188, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 356400, Discounts: 20139, Sales: 336261, COGS: 239750, Profit: 96511, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 2233, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 669900, Discounts: 57687, Sales: 612213, COGS: 686750, Profit: 74537, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 421, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 52625, Discounts: 14393.75, Sales: 38231.25, COGS: 197400, Profit: 159168.75, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 269, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 94150, Discounts: 70462, Sales: 23688, COGS: 747760, Profit: 724072, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3766, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 470750, Discounts: 8697.5, Sales: 462052.5, COGS: 119280, Profit: 342772.5, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 952, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 19040, Discounts: 1565.2, Sales: 17474.8, COGS: 11180, Profit: 6294.8, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2964, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 889200, Discounts: 28812, Sales: 860388, COGS: 343000, Profit: 517388, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1505, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 10535, Discounts: 273.28, Sales: 10261.72, COGS: 2440, Profit: 7821.72, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1678, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 33560, Discounts: 2051.2, Sales: 31508.8, COGS: 12820, Profit: 18688.8, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4249, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 29743, Discounts: 143.92, Sales: 29599.08, COGS: 1285, Profit: 28314.08, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1677, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 33540, Discounts: 2051.2, Sales: 31488.8, COGS: 12820, Profit: 18668.8, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3051, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 381375, Discounts: 15400, Sales: 365975, COGS: 184800, Profit: 181175, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 3372, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 50580, Discounts: 588, Sales: 49992, COGS: 4900, Profit: 45092, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1686, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 590100, Discounts: 38136, Sales: 551964, COGS: 354120, Profit: 197844, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3086, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 46290, Discounts: 3001.2, Sales: 43288.8, COGS: 25010, Profit: 18278.8, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4150, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 83000, Discounts: 1132.8, Sales: 81867.2, COGS: 7080, Profit: 74787.2, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3027, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 60540, Discounts: 1032, Sales: 59508, COGS: 6450, Profit: 53058, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 4359, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1307700, Discounts: 37488, Sales: 1270212, COGS: 390500, Profit: 879712, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 3628, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1088400, Discounts: 30792, Sales: 1057608, COGS: 320750, Profit: 736858, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 1589, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 23835, Discounts: 853.2, Sales: 22981.8, COGS: 7110, Profit: 15871.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2679, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 334875, Discounts: 11140, Sales: 323735, COGS: 133680, Profit: 190055, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3401, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 23807, Discounts: 705.04, Sales: 23101.96, COGS: 6295, Profit: 16806.96, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2815, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 19705, Discounts: 613.2, Sales: 19091.8, COGS: 5475, Profit: 13616.8, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2964, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 59280, Discounts: 2185.6, Sales: 57094.4, COGS: 13660, Profit: 43434.4, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 4173, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1251900, Discounts: 59040, Sales: 1192860, COGS: 615000, Profit: 577860, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1157, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 8099, Discounts: 379.68, Sales: 7719.32, COGS: 3390, Profit: 4329.32, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3065, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 21455, Discounts: 894.88, Sales: 20560.12, COGS: 7990, Profit: 12570.12, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1962, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 13734, Discounts: 1349.04, Sales: 12384.96, COGS: 12045, Profit: 339.96, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4080, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 81600, Discounts: 3094.4, Sales: 78505.6, COGS: 19340, Profit: 59165.6, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1713, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 34260, Discounts: 4788.8, Sales: 29471.2, COGS: 29930, Profit: 458.8, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2795, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 978250, Discounts: 60088, Sales: 918162, COGS: 557960, Profit: 360202, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 4082, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 28574, Discounts: 1089.76, Sales: 27484.24, COGS: 9730, Profit: 17754.24, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1691, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 591850, Discounts: 38136, Sales: 553714, COGS: 354120, Profit: 199594, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2305, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 27660, Discounts: 574.08, Sales: 27085.92, COGS: 1794, Profit: 25291.92, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3401, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 23807, Discounts: 1627.92, Sales: 22179.08, COGS: 14535, Profit: 7644.08, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2288, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 16016, Discounts: 1309.28, Sales: 14706.72, COGS: 11690, Profit: 3016.72, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 2399, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 719700, Discounts: 9264, Sales: 710436, COGS: 96500, Profit: 613936, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 4086, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1225800, Discounts: 15240, Sales: 1210560, COGS: 158750, Profit: 1051810, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2651, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 927850, Discounts: 16086, Sales: 911764, COGS: 149370, Profit: 762394, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3971, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 27797, Discounts: 1309.28, Sales: 26487.72, COGS: 11690, Profit: 14797.72, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2512, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 879200, Discounts: 10668, Sales: 868532, COGS: 99060, Profit: 769472, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2745, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 960750, Discounts: 11816, Sales: 948934, COGS: 109720, Profit: 839214, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1903, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 570900, Discounts: 51216, Sales: 519684, COGS: 533500, Profit: 13816, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 647, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 194100, Discounts: 19392, Sales: 174708, COGS: 202000, Profit: 27292, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2914, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 58280, Discounts: 1132.8, Sales: 57147.2, COGS: 7080, Profit: 50067.2, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1889, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 13223, Discounts: 1627.92, Sales: 11595.08, COGS: 14535, Profit: 2939.92, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1466, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 29320, Discounts: 2185.6, Sales: 27134.4, COGS: 13660, Profit: 13474.4, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 887, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 266100, Discounts: 59040, Sales: 207060, COGS: 615000, Profit: 407940, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 395, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 7900, Discounts: 2432, Sales: 5468, COGS: 15200, Profit: 9732, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1693, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 25395, Discounts: 853.2, Sales: 24541.8, COGS: 7110, Profit: 17431.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2459, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 29508, Discounts: 1320, Sales: 28188, COGS: 4125, Profit: 24063, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2649, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 794700, Discounts: 15240, Sales: 779460, COGS: 158750, Profit: 620710, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 3608, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 72160, Discounts: 698.4, Sales: 71461.6, COGS: 4365, Profit: 67096.6, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1073, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 321900, Discounts: 29538, Sales: 292362, COGS: 273500, Profit: 18862, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1754, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 21048, Discounts: 396.36, Sales: 20651.64, COGS: 1101, Profit: 19550.64, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 2167, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 650100, Discounts: 102667.5, Sales: 547432.5, COGS: 950625, Profit: 403192.5, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1319, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 461650, Discounts: 52479, Sales: 409171, COGS: 433160, Profit: 23989, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1679, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 503700, Discounts: 8694, Sales: 495006, COGS: 80500, Profit: 414506, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1252, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 15024, Discounts: 2506.68, Sales: 12517.32, COGS: 6963, Profit: 5554.32, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3493, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 436625, Discounts: 20891.25, Sales: 415733.75, COGS: 222840, Profit: 192893.75, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1697, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 11879, Discounts: 1014.93, Sales: 10864.07, COGS: 8055, Profit: 2809.07, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1156, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 144500, Discounts: 31466.25, Sales: 113033.75, COGS: 335640, Profit: 222606.25, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 726, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 217800, Discounts: 9018, Sales: 208782, COGS: 83500, Profit: 125282, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1153, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 345900, Discounts: 69255, Sales: 276645, COGS: 641250, Profit: 364605, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2720, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 952000, Discounts: 76135.5, Sales: 875864.5, COGS: 628420, Profit: 247444.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3658, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 54870, Discounts: 4961.25, Sales: 49908.75, COGS: 36750, Profit: 13158.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2950, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 885000, Discounts: 29538, Sales: 855462, COGS: 273500, Profit: 581962, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1821, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 27315, Discounts: 1656.45, Sales: 25658.55, COGS: 12270, Profit: 13388.55, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 4174, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 50088, Discounts: 396.36, Sales: 49691.64, COGS: 1101, Profit: 48590.64, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1127, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 338100, Discounts: 35748, Sales: 302352, COGS: 331000, Profit: 28648, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2209, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 26508, Discounts: 1917, Sales: 24591, COGS: 5325, Profit: 19266, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 862, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 107750, Discounts: 31466.25, Sales: 76283.75, COGS: 335640, Profit: 259356.25, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3805, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 57075, Discounts: 330.75, Sales: 56744.25, COGS: 2450, Profit: 54294.25, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1415, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 424500, Discounts: 102424.5, Sales: 322075.5, COGS: 948375, Profit: 626299.5, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2231, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 780850, Discounts: 41170.5, Sales: 739679.5, COGS: 339820, Profit: 399859.5, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3649, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 456125, Discounts: 6378.75, Sales: 449746.25, COGS: 68040, Profit: 381706.25, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2948, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 368500, Discounts: 23737.5, Sales: 344762.5, COGS: 253200, Profit: 91562.5, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 3395, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1188250, Discounts: 39973.5, Sales: 1148276.5, COGS: 329940, Profit: 818336.5, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2650, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 31800, Discounts: 2112.48, Sales: 29687.52, COGS: 5868, Profit: 23819.52, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 585, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 175500, Discounts: 71793, Sales: 103707, COGS: 664750, Profit: 561043, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1316, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 460600, Discounts: 42572.25, Sales: 418027.75, COGS: 351390, Profit: 66637.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 4459, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 53508, Discounts: 950.4, Sales: 52557.6, COGS: 2640, Profit: 49917.6, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2711, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 813300, Discounts: 50409, Sales: 762891, COGS: 466750, Profit: 296141, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2621, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 31452, Discounts: 2412.72, Sales: 29039.28, COGS: 6702, Profit: 22337.28, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3613, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 54195, Discounts: 1656.45, Sales: 52538.55, COGS: 12270, Profit: 40268.55, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1847, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 230875, Discounts: 9866.25, Sales: 221008.75, COGS: 105240, Profit: 115768.75, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2996, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1048600, Discounts: 65236.5, Sales: 983363.5, COGS: 538460, Profit: 444903.5, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2838, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 993300, Discounts: 39973.5, Sales: 953326.5, COGS: 329940, Profit: 623386.5, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 1302, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 19530, Discounts: 1309.5, Sales: 18220.5, COGS: 9700, Profit: 8520.5, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1536, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 30720, Discounts: 3049.2, Sales: 27670.8, COGS: 16940, Profit: 10730.8, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1291, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 25820, Discounts: 1193.4, Sales: 24626.6, COGS: 6630, Profit: 17996.6, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1213, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 8491, Discounts: 515.97, Sales: 7975.03, COGS: 4095, Profit: 3880.03, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2370, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 28440, Discounts: 1706.4, Sales: 26733.6, COGS: 4740, Profit: 21993.6, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1979, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 13853, Discounts: 328.23, Sales: 13524.77, COGS: 2605, Profit: 10919.77, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2879, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 57580, Discounts: 1751.4, Sales: 55828.6, COGS: 9730, Profit: 46098.6, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1707, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 34140, Discounts: 1868.4, Sales: 32271.6, COGS: 10380, Profit: 21891.6, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2933, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 20531, Discounts: 226.8, Sales: 20304.2, COGS: 1800, Profit: 18504.2, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1014, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 12168, Discounts: 2124.36, Sales: 10043.64, COGS: 5901, Profit: 4142.64, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 693, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 10395, Discounts: 3547.8, Sales: 6847.2, COGS: 26280, Profit: 19432.8, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3741, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 26187, Discounts: 226.8, Sales: 25960.2, COGS: 1800, Profit: 24160.2, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3116, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 62320, Discounts: 4827.6, Sales: 57492.4, COGS: 26820, Profit: 30672.4, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 3995, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 27965, Discounts: 328.23, Sales: 27636.77, COGS: 2605, Profit: 25031.77, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 953, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 19060, Discounts: 1868.4, Sales: 17191.6, COGS: 10380, Profit: 6811.6, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2530, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 37950, Discounts: 2201.18, Sales: 35748.82, COGS: 16305, Profit: 19443.82, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2565, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 30780, Discounts: 330.48, Sales: 30449.52, COGS: 918, Profit: 29531.52, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 4297, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 51564, Discounts: 463.2, Sales: 51100.8, COGS: 1158, Profit: 49942.8, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2871, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 20097, Discounts: 1629.6, Sales: 18467.4, COGS: 11640, Profit: 6827.4, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3537, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 42444, Discounts: 463.2, Sales: 41980.8, COGS: 1158, Profit: 40822.8, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1598, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 199750, Discounts: 43068.75, Sales: 156681.25, COGS: 413460, Profit: 256778.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 2616, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 327000, Discounts: 18525, Sales: 308475, COGS: 177840, Profit: 130635, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2836, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 992600, Discounts: 80955, Sales: 911645, COGS: 601380, Profit: 310265, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 4023, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 502875, Discounts: 22550, Sales: 480325, COGS: 216480, Profit: 263845, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3994, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 59910, Discounts: 3108, Sales: 56802, COGS: 20720, Profit: 36082, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2928, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 58560, Discounts: 3908, Sales: 54652, COGS: 19540, Profit: 35112, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2912, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 873600, Discounts: 17730, Sales: 855870, COGS: 147750, Profit: 708120, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3671, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 55065, Discounts: 3250.5, Sales: 51814.5, COGS: 21670, Profit: 30144.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2778, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 55560, Discounts: 482, Sales: 55078, COGS: 2410, Profit: 52668, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 405, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 6075, Discounts: 1021.5, Sales: 5053.5, COGS: 6810, Profit: 1756.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 2013, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 30195, Discounts: 765, Sales: 29430, COGS: 5100, Profit: 24330, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2634, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 39510, Discounts: 1185, Sales: 38325, COGS: 7900, Profit: 30425, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 4166, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1458100, Discounts: 22365, Sales: 1435735, COGS: 166140, Profit: 1269595, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 355, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 44375, Discounts: 19950, Sales: 24425, COGS: 191520, Profit: 167095, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2382, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 714600, Discounts: 68820, Sales: 645780, COGS: 573500, Profit: 72280, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 4170, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 83400, Discounts: 482, Sales: 82918, COGS: 2410, Profit: 80508, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 892, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 6244, Discounts: 1865.5, Sales: 4378.5, COGS: 13325, Profit: 8946.5, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2200, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 275000, Discounts: 23950, Sales: 251050, COGS: 229920, Profit: 21130, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3389, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1016700, Discounts: 25590, Sales: 991110, COGS: 213250, Profit: 777860, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 2990, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 373750, Discounts: 4262.5, Sales: 369487.5, COGS: 40920, Profit: 328567.5, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 4013, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 60195, Discounts: 961.5, Sales: 59233.5, COGS: 6410, Profit: 52823.5, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 739, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 258650, Discounts: 98245, Sales: 160405, COGS: 729820, Profit: 569415, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1989, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 596700, Discounts: 12960, Sales: 583740, COGS: 108000, Profit: 475740, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2991, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 897300, Discounts: 68820, Sales: 828480, COGS: 573500, Profit: 254980, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 4237, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 63555, Discounts: 3250.5, Sales: 60304.5, COGS: 21670, Profit: 38634.5, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1442, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 180250, Discounts: 31612.5, Sales: 148637.5, COGS: 303480, Profit: 154842.5, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2712, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 949200, Discounts: 65450, Sales: 883750, COGS: 486200, Profit: 397550, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1508, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 188500, Discounts: 7237.5, Sales: 181262.5, COGS: 69480, Profit: 111782.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 4245, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1485750, Discounts: 78400, Sales: 1407350, COGS: 582400, Profit: 824950, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2630, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 789000, Discounts: 89790, Sales: 699210, COGS: 748250, Profit: 49040, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1182, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 14184, Discounts: 4224.6, Sales: 9959.4, COGS: 10561.5, Profit: 602.1, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1221, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 24420, Discounts: 4078, Sales: 20342, COGS: 20390, Profit: 48, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 963, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 11556, Discounts: 3088.8, Sales: 8467.2, COGS: 7722, Profit: 745.2, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 3243, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1135050, Discounts: 24745, Sales: 1110305, COGS: 183820, Profit: 926485, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1120, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 16800, Discounts: 3108, Sales: 13692, COGS: 20720, Profit: 7028, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1174, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 352200, Discounts: 25590, Sales: 326610, COGS: 213250, Profit: 113360, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 2541, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 30492, Discounts: 1581.36, Sales: 28910.64, COGS: 3594, Profit: 25316.64, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3246, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 22722, Discounts: 1949.64, Sales: 20772.36, COGS: 12660, Profit: 8112.36, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1531, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 18372, Discounts: 1581.36, Sales: 16790.64, COGS: 3594, Profit: 13196.64, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2526, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 37890, Discounts: 633.6, Sales: 37256.4, COGS: 3840, Profit: 33416.4, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 1136, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 13632, Discounts: 623.04, Sales: 13008.96, COGS: 1416, Profit: 11592.96, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1983, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 13881, Discounts: 1215.83, Sales: 12665.17, COGS: 7895, Profit: 4770.17, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 3259, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 39108, Discounts: 1326.6, Sales: 37781.4, COGS: 3015, Profit: 34766.4, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 3267, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 49005, Discounts: 5279.17, Sales: 43725.82, COGS: 31995, Profit: 11730.82, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 2454, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 29448, Discounts: 623.04, Sales: 28824.96, COGS: 1416, Profit: 27408.96, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 2643, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 31716, Discounts: 2556.84, Sales: 29159.16, COGS: 5811, Profit: 23348.16, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 383, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 134050, Discounts: 30492, Sales: 103558, COGS: 205920, Profit: 102362, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2801, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 840300, Discounts: 92763, Sales: 747537, COGS: 702750, Profit: 44787, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1667, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 208375, Discounts: 33563.75, Sales: 174811.25, COGS: 292920, Profit: 118108.75, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 3539, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 53085, Discounts: 2574, Sales: 50511, COGS: 15600, Profit: 34911, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 4226, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 29582, Discounts: 2083.62, Sales: 27498.38, COGS: 13530, Profit: 13968.38, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2220, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 777000, Discounts: 29491, Sales: 747509, COGS: 199160, Profit: 548349, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 776, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 15520, Discounts: 6582.4, Sales: 8937.6, COGS: 29920, Profit: 20982.4, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 553, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 8295, Discounts: 3559.05, Sales: 4735.95, COGS: 21570, Profit: 16834.05, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2107, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 632100, Discounts: 28809, Sales: 603291, COGS: 218250, Profit: 385041, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2468, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 49360, Discounts: 2468.4, Sales: 46891.6, COGS: 11220, Profit: 35671.6, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1905, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 666750, Discounts: 81023.25, Sales: 585726.75, COGS: 547170, Profit: 38556.75, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3658, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 43896, Discounts: 5314.32, Sales: 38581.68, COGS: 12078, Profit: 26503.68, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 4301, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 51612, Discounts: 3201.66, Sales: 48410.34, COGS: 7276.5, Profit: 41133.84, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2446, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 48920, Discounts: 5266.8, Sales: 43653.2, COGS: 23940, Profit: 19713.2, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 4209, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 63135, Discounts: 3273.6, Sales: 59861.4, COGS: 19840, Profit: 40021.4, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3353, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 419125, Discounts: 33563.75, Sales: 385561.25, COGS: 292920, Profit: 92641.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1401, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 28020, Discounts: 6582.4, Sales: 21437.6, COGS: 29920, Profit: 8482.4, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1865, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 559500, Discounts: 45078, Sales: 514422, COGS: 341500, Profit: 172922, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 463, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 9260, Discounts: 6171, Sales: 3089, COGS: 28050, Profit: 24961, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 4177, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 62655, Discounts: 1080.75, Sales: 61574.25, COGS: 6550, Profit: 55024.25, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2523, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 883050, Discounts: 13244, Sales: 869806, COGS: 89440, Profit: 780366, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1930, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 13510, Discounts: 1392.16, Sales: 12117.84, COGS: 9040, Profit: 3077.84, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1301, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 15612, Discounts: 2288.88, Sales: 13323.12, COGS: 5202, Profit: 8121.12, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 4125, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 515625, Discounts: 7617.5, Sales: 508007.5, COGS: 66480, Profit: 441527.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 607, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 12140, Discounts: 6457, Sales: 5683, COGS: 29350, Profit: 23667, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 478, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 59750, Discounts: 43518.75, Sales: 16231.25, COGS: 379800, Profit: 363568.75, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 4489, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 89780, Discounts: 5783.8, Sales: 83996.2, COGS: 26290, Profit: 57706.2, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1504, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 188000, Discounts: 19703.75, Sales: 168296.25, COGS: 171960, Profit: 3663.75, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 3763, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 470375, Discounts: 13021.25, Sales: 457353.75, COGS: 113640, Profit: 343713.75, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2412, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 844200, Discounts: 13244, Sales: 830956, COGS: 89440, Profit: 741516, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2342, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 35130, Discounts: 3559.05, Sales: 31570.95, COGS: 21570, Profit: 10000.95, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4451, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 31157, Discounts: 292.6, Sales: 30864.4, COGS: 1900, Profit: 28964.4, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3796, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1328600, Discounts: 37212, Sales: 1291388, COGS: 230360, Profit: 1061028, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 2286, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 285750, Discounts: 36240, Sales: 249510, COGS: 289920, Profit: 40410, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3614, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 451750, Discounts: 32340, Sales: 419410, COGS: 258720, Profit: 160690, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1716, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 25740, Discounts: 4840.2, Sales: 20899.8, COGS: 26890, Profit: 5990.2, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1301, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 19515, Discounts: 1218.6, Sales: 18296.4, COGS: 6770, Profit: 11526.4, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 4175, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1252500, Discounts: 63828, Sales: 1188672, COGS: 443250, Profit: 745422, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 975, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 6825, Discounts: 2032.8, Sales: 4792.2, COGS: 12100, Profit: 7307.8, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1154, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 8078, Discounts: 2296.56, Sales: 5781.44, COGS: 13670, Profit: 7888.56, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1873, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 37460, Discounts: 4116, Sales: 33344, COGS: 17150, Profit: 16194, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3766, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 1129800, Discounts: 42696, Sales: 1087104, COGS: 296500, Profit: 790604, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3558, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1067400, Discounts: 125820, Sales: 941580, COGS: 873750, Profit: 67830, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3156, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1104600, Discounts: 37212, Sales: 1067388, COGS: 230360, Profit: 837028, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2994, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 374250, Discounts: 32340, Sales: 341910, COGS: 258720, Profit: 83190, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2087, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 41740, Discounts: 2172, Sales: 39568, COGS: 9050, Profit: 30518, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1056, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 21120, Discounts: 4116, Sales: 17004, COGS: 17150, Profit: 146, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1353, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 473550, Discounts: 66948, Sales: 406602, COGS: 414440, Profit: 7838, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 416, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 124800, Discounts: 48924, Sales: 75876, COGS: 339750, Profit: 263874, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3880, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1164000, Discounts: 77400, Sales: 1086600, COGS: 537500, Profit: 549100, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 809, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 283150, Discounts: 50274, Sales: 232876, COGS: 311220, Profit: 78344, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1892, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 28380, Discounts: 684, Sales: 27696, COGS: 3800, Profit: 23896, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2072, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 41440, Discounts: 2959.2, Sales: 38480.8, COGS: 12330, Profit: 26150.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3052, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1068200, Discounts: 58590, Sales: 1009610, COGS: 362700, Profit: 646910, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3121, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1092350, Discounts: 41412, Sales: 1050938, COGS: 256360, Profit: 794578, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2059, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 41180, Discounts: 2172, Sales: 39008, COGS: 9050, Profit: 29958, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4254, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 51048, Discounts: 3036.96, Sales: 48011.04, COGS: 6327, Profit: 41684.04, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1293, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 19395, Discounts: 6974.1, Sales: 12420.9, COGS: 38745, Profit: 26324.1, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1293, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 452550, Discounts: 26166, Sales: 426384, COGS: 161980, Profit: 264404, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 230, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 80500, Discounts: 41412, Sales: 39088, COGS: 256360, Profit: 217272, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1723, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 215375, Discounts: 35805, Sales: 179570, COGS: 286440, Profit: 106870, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 240, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 4800, Discounts: 2959.2, Sales: 1840.8, COGS: 12330, Profit: 10489.2, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2571, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 899850, Discounts: 11340, Sales: 888510, COGS: 70200, Profit: 818310, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1661, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 11627, Discounts: 2874.06, Sales: 8752.94, COGS: 17107.5, Profit: 8354.56, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 4474, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 31318, Discounts: 2296.56, Sales: 29021.44, COGS: 13670, Profit: 15351.44, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 833, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 12495, Discounts: 4586.4, Sales: 7908.6, COGS: 25480, Profit: 17571.4, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 674, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 13480, Discounts: 6051.6, Sales: 7428.4, COGS: 25215, Profit: 17786.6, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 778, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 9336, Discounts: 3831.84, Sales: 5504.16, COGS: 7983, Profit: 2478.84, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1457, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 29140, Discounts: 3674.4, Sales: 25465.6, COGS: 15310, Profit: 10155.6, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 3158, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 22106, Discounts: 1252.44, Sales: 20853.56, COGS: 7455, Profit: 13398.56, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 4095, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 81900, Discounts: 3674.4, Sales: 78225.6, COGS: 15310, Profit: 62915.6, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 3170, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 38040, Discounts: 3975.84, Sales: 34064.16, COGS: 8283, Profit: 25781.16, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 493, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 7395, Discounts: 5005.65, Sales: 2389.35, COGS: 25670, Profit: 23280.65, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 3286, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 49290, Discounts: 5005.65, Sales: 44284.35, COGS: 25670, Profit: 18614.35, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 3563, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1247050, Discounts: 41996.5, Sales: 1205053.5, COGS: 239980, Profit: 965073.5, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 4109, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1438150, Discounts: 81445, Sales: 1356705, COGS: 465400, Profit: 891305, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 3653, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 73060, Discounts: 1149.2, Sales: 71910.8, COGS: 4420, Profit: 67490.8, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2203, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 771050, Discounts: 44703.75, Sales: 726346.25, COGS: 255450, Profit: 470896.25, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2924, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 20468, Discounts: 1181.18, Sales: 19286.82, COGS: 6490, Profit: 12796.82, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2650, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 31800, Discounts: 942.24, Sales: 30857.76, COGS: 1812, Profit: 29045.76, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1194, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 23880, Discounts: 5863, Sales: 18017, COGS: 22550, Profit: 4533, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 3366, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 67320, Discounts: 3247.4, Sales: 64072.6, COGS: 12490, Profit: 51582.6, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1325, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 9275, Discounts: 1309.04, Sales: 7965.97, COGS: 7192.5, Profit: 773.47, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 4243, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1272900, Discounts: 31473, Sales: 1241427, COGS: 201750, Profit: 1039677, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2887, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 57740, Discounts: 6866.6, Sales: 50873.4, COGS: 26410, Profit: 24463.4, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3839, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 76780, Discounts: 7040.8, Sales: 69739.2, COGS: 27080, Profit: 42659.2, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1863, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 652050, Discounts: 119756, Sales: 532294, COGS: 684320, Profit: 152026, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2858, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 357250, Discounts: 25723.75, Sales: 331526.25, COGS: 189960, Profit: 141566.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2868, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 34416, Discounts: 890.76, Sales: 33525.24, COGS: 1713, Profit: 31812.24, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3805, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 26635, Discounts: 2453.36, Sales: 24181.64, COGS: 13480, Profit: 10701.64, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3914, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 58710, Discounts: 3051.75, Sales: 55658.25, COGS: 15650, Profit: 40008.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 524, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 10480, Discounts: 3247.4, Sales: 7232.6, COGS: 12490, Profit: 5257.4, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3095, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1083250, Discounts: 16243.5, Sales: 1067006.5, COGS: 92820, Profit: 974186.5, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2410, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 28920, Discounts: 1580.28, Sales: 27339.72, COGS: 3039, Profit: 24300.72, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 4263, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 63945, Discounts: 7795.13, Sales: 56149.88, COGS: 39975, Profit: 16174.88, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2239, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 783650, Discounts: 119756, Sales: 663894, COGS: 684320, Profit: 20426, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 569, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 3983, Discounts: 1082.9, Sales: 2900.1, COGS: 5950, Profit: 3049.9, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3889, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 46668, Discounts: 942.24, Sales: 45725.76, COGS: 1812, Profit: 43913.76, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 1378, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 20670, Discounts: 1287, Sales: 19383, COGS: 6600, Profit: 12783, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2253, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 27036, Discounts: 639.6, Sales: 26396.4, COGS: 1230, Profit: 25166.4, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 3202, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 960600, Discounts: 101595, Sales: 859005, COGS: 651250, Profit: 207755, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3835, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 46020, Discounts: 1580.28, Sales: 44439.72, COGS: 3039, Profit: 41400.72, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 2487, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 310875, Discounts: 25723.75, Sales: 285151.25, COGS: 189960, Profit: 95191.25, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4428, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 66420, Discounts: 3051.75, Sales: 63368.25, COGS: 15650, Profit: 47718.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1200, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 150000, Discounts: 26958.75, Sales: 123041.25, COGS: 199080, Profit: 76038.75, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2953, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 20671, Discounts: 1082.9, Sales: 19588.1, COGS: 5950, Profit: 13638.1, Date: `06/01/2019`, MonthName: `June`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1453, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 17436, Discounts: 639.6, Sales: 16796.4, COGS: 1230, Profit: 15566.4, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 865, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 10380, Discounts: 2761.2, Sales: 7618.8, COGS: 5310, Profit: 2308.8, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1072, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 21440, Discounts: 7221.2, Sales: 14218.8, COGS: 25790, Profit: 11571.2, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1737, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 34740, Discounts: 4880.4, Sales: 29859.6, COGS: 17430, Profit: 12429.6, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 1535, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 10745, Discounts: 2936.08, Sales: 7808.92, COGS: 14980, Profit: 7171.08, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2532, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 17724, Discounts: 274.4, Sales: 17449.6, COGS: 1400, Profit: 16049.6, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1765, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 12355, Discounts: 287.14, Sales: 12067.86, COGS: 1465, Profit: 10602.86, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1567, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 10969, Discounts: 2936.08, Sales: 8032.92, COGS: 14980, Profit: 6947.08, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2640, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 39600, Discounts: 583.8, Sales: 39016.2, COGS: 2780, Profit: 36236.2, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3079, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 61580, Discounts: 6798.4, Sales: 54781.6, COGS: 24280, Profit: 30501.6, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4130, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 61950, Discounts: 3710.7, Sales: 58239.3, COGS: 17670, Profit: 40569.3, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2938, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 35256, Discounts: 2340.24, Sales: 32915.76, COGS: 4179, Profit: 28736.76, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3080, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 21560, Discounts: 274.4, Sales: 21285.6, COGS: 1400, Profit: 19885.6, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1530, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 18360, Discounts: 2340.24, Sales: 16019.76, COGS: 4179, Profit: 11840.76, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 3537, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 42444, Discounts: 3385.2, Sales: 39058.8, COGS: 6045, Profit: 33013.8, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 2021, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 606300, Discounts: 33642, Sales: 572658, COGS: 200250, Profit: 372408, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1804, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 225500, Discounts: 17902.5, Sales: 207597.5, COGS: 122760, Profit: 84837.5, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1014, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 304200, Discounts: 62832, Sales: 241368, COGS: 374000, Profit: 132632, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2913, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 873900, Discounts: 42420, Sales: 831480, COGS: 252500, Profit: 578980, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 763, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 11445, Discounts: 3177.3, Sales: 8267.7, COGS: 15130, Profit: 6862.3, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1425, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 21375, Discounts: 4830, Sales: 16545, COGS: 23000, Profit: 6455, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 4357, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 544625, Discounts: 49367.5, Sales: 495257.5, COGS: 338520, Profit: 156737.5, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 2138, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 748300, Discounts: 109147.5, Sales: 639152.5, COGS: 579150, Profit: 60002.5, Date: `01/01/2019`, MonthName: `January`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3825, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 1338750, Discounts: 58751, Sales: 1279999, COGS: 311740, Profit: 968259, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 3393, ManufacturingPrice: 5, SalePrice: 350, GrossSales: 1187550, Discounts: 9800, Sales: 1177750, COGS: 52000, Profit: 1125750, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 2215, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 15505, Discounts: 380.24, Sales: 15124.76, COGS: 1940, Profit: 13184.76, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2278, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 15946, Discounts: 1692.46, Sales: 14253.54, COGS: 8635, Profit: 5618.54, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 403, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 6045, Discounts: 4830, Sales: 1215, COGS: 23000, Profit: 21785, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 289, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 5780, Discounts: 728, Sales: 5052, COGS: 2600, Profit: 2452, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 749, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 11235, Discounts: 5187, Sales: 6048, COGS: 24700, Profit: 18652, Date: `09/01/2018`, MonthName: `September`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 372, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 5580, Discounts: 3660.3, Sales: 1919.7, COGS: 17430, Profit: 15510.3, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3781, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 45372, Discounts: 4895.52, Sales: 40476.48, COGS: 8742, Profit: 31734.48, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1785, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 12495, Discounts: 1696.38, Sales: 10798.62, COGS: 8655, Profit: 2143.62, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4029, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1410150, Discounts: 34300, Sales: 1375850, COGS: 182000, Profit: 1193850, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2813, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 33756, Discounts: 3732.96, Sales: 30023.04, COGS: 6666, Profit: 23357.04, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2150, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 752500, Discounts: 57673, Sales: 694827, COGS: 306020, Profit: 388807, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2093, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 732550, Discounts: 94178, Sales: 638372, COGS: 499720, Profit: 138652, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 4391, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 548875, Discounts: 27562.5, Sales: 521312.5, COGS: 189000, Profit: 332312.5, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2695, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 53900, Discounts: 1696.8, Sales: 52203.2, COGS: 6060, Profit: 46143.2, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1337, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 401100, Discounts: 103320, Sales: 297780, COGS: 615000, Profit: 317220, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 2621, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 786300, Discounts: 11298, Sales: 775002, COGS: 67250, Profit: 707752, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3735, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1120500, Discounts: 106512, Sales: 1013988, COGS: 634000, Profit: 379988, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 4320, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 30240, Discounts: 2844.94, Sales: 27395.06, COGS: 14515, Profit: 12880.06, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 2828, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 848400, Discounts: 106722, Sales: 741678, COGS: 635250, Profit: 106428, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 2586, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 775800, Discounts: 11298, Sales: 764502, COGS: 67250, Profit: 697252, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 1248, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 374400, Discounts: 62832, Sales: 311568, COGS: 374000, Profit: 62432, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 4035, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 1210500, Discounts: 42420, Sales: 1168080, COGS: 252500, Profit: 915580, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 359, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 125650, Discounts: 62769, Sales: 62881, COGS: 333060, Profit: 270179, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 3926, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 1177800, Discounts: 37296, Sales: 1140504, COGS: 222000, Profit: 918504, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 4247, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 530875, Discounts: 49770, Sales: 481105, COGS: 341280, Profit: 139825, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2695, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 32340, Discounts: 4158, Sales: 28182, COGS: 7425, Profit: 20757, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 1104, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 16560, Discounts: 3660.3, Sales: 12899.7, COGS: 17430, Profit: 4530.3, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1449, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 17388, Discounts: 4895.52, Sales: 12492.48, COGS: 8742, Profit: 3750.48, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1131, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 7917, Discounts: 1696.38, Sales: 6220.62, COGS: 8655, Profit: 2434.38, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1468, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 10276, Discounts: 1692.46, Sales: 8583.54, COGS: 8635, Profit: 51.46, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 1272, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 19080, Discounts: 3927, Sales: 15153, COGS: 18700, Profit: 3547, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1403, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 175375, Discounts: 22012.5, Sales: 153362.5, COGS: 140880, Profit: 12482.5, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2161, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 270125, Discounts: 51881.25, Sales: 218243.75, COGS: 332040, Profit: 113796.25, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1937, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 242125, Discounts: 20343.75, Sales: 221781.25, COGS: 130200, Profit: 91581.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2879, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 863700, Discounts: 24570, Sales: 839130, COGS: 136500, Profit: 702630, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1330, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 26600, Discounts: 3474, Sales: 23126, COGS: 11580, Profit: 11546, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2426, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 36390, Discounts: 3631.5, Sales: 32758.5, COGS: 16140, Profit: 16618.5, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2033, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 14231, Discounts: 2661.75, Sales: 11569.25, COGS: 12675, Profit: 1105.75, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2029, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 710150, Discounts: 149677.5, Sales: 560472.5, COGS: 741260, Profit: 180787.5, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1049, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 15735, Discounts: 5757.75, Sales: 9977.25, COGS: 25590, Profit: 15612.75, Date: `08/01/2019`, MonthName: `August`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1062, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 21240, Discounts: 801, Sales: 20439, COGS: 2670, Profit: 17769, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2509, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 313625, Discounts: 20343.75, Sales: 293281.25, COGS: 130200, Profit: 163081.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1743, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 26145, Discounts: 2643.75, Sales: 23501.25, COGS: 11750, Profit: 11751.25, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3418, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1196300, Discounts: 105367.5, Sales: 1090932.5, COGS: 521820, Profit: 569112.5, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 1751, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 612850, Discounts: 112927.5, Sales: 499922.5, COGS: 559260, Profit: 59337.5, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3228, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 38736, Discounts: 1645.2, Sales: 37090.8, COGS: 2742, Profit: 34348.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1105, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 22100, Discounts: 879, Sales: 21221, COGS: 2930, Profit: 18291, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2778, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 33336, Discounts: 900, Sales: 32436, COGS: 1500, Profit: 30936, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 1173, ManufacturingPrice: 120, SalePrice: 15, GrossSales: 17595, Discounts: 6358.5, Sales: 11236.5, COGS: 28260, Profit: 17023.5, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3160, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 395000, Discounts: 12431.25, Sales: 382568.75, COGS: 79560, Profit: 303008.75, Date: `09/01/2019`, MonthName: `September`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 4322, ManufacturingPrice: 120, SalePrice: 300, GrossSales: 1296600, Discounts: 115830, Sales: 1180770, COGS: 643500, Profit: 537270, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 1901, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 237625, Discounts: 45712.5, Sales: 191912.5, COGS: 292560, Profit: 100647.5, Date: `12/01/2018`, MonthName: `December`, Year: 2018 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2980, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 35760, Discounts: 1645.2, Sales: 34114.8, COGS: 2742, Profit: 31372.8, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4068, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 81360, Discounts: 2596.5, Sales: 78763.5, COGS: 8655, Profit: 70108.5, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2105, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 31575, Discounts: 1107, Sales: 30468, COGS: 4920, Profit: 25548, Date: `07/01/2019`, MonthName: `July`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 1647, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 32940, Discounts: 801, Sales: 32139, COGS: 2670, Profit: 29469, Date: `10/01/2018`, MonthName: `October`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 235, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 3525, Discounts: 2643.75, Sales: 881.25, COGS: 11750, Profit: 10868.75, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3617, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 452125, Discounts: 55387.5, Sales: 396737.5, COGS: 354480, Profit: 42257.5, Date: `11/01/2018`, MonthName: `November`, Year: 2018 }), - new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 2106, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 263250, Discounts: 10350, Sales: 252900, COGS: 66240, Profit: 186660, Date: `11/01/2019`, MonthName: `November`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2351, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 47020, Discounts: 879, Sales: 46141, COGS: 2930, Profit: 43211, Date: `12/01/2019`, MonthName: `December`, Year: 2019 }), - new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1897, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 569100, Discounts: 111375, Sales: 457725, COGS: 618750, Profit: 161025, Date: `03/01/2019`, MonthName: `March`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 647, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 194100, Discounts: 24570, Sales: 169530, COGS: 136500, Profit: 33030, Date: `10/01/2019`, MonthName: `October`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 3621, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 25347, Discounts: 1436.4, Sales: 23910.6, COGS: 6840, Profit: 17070.6, Date: `02/01/2019`, MonthName: `February`, Year: 2019 }), - new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3221, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 22547, Discounts: 759.15, Sales: 21787.85, COGS: 3615, Profit: 18172.85, Date: `04/01/2019`, MonthName: `April`, Year: 2019 }), - new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 493, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 5916, Discounts: 3250.8, Sales: 2665.2, COGS: 5418, Profit: 2752.8, Date: `05/01/2019`, MonthName: `May`, Year: 2019 }), - ]; - super(...newItems.slice(0)); - } + public constructor(items: Array | number = -1) { + if (Array.isArray(items)) { + super(...items); + } else { + const newItems = [ + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 501, ManufacturingPrice: 15, SalePrice: 23, GrossSales: 26440, Discounts: null, Sales: 26440, COGS: 16185, Profit: 11255, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1372, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 27440, Discounts: null, Sales: 27440, COGS: 16185, Profit: 11255, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2762, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 55240, Discounts: null, Sales: 55240, COGS: 13210, Profit: 42030, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1464, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 21960, Discounts: null, Sales: 21960, COGS: 21780, Profit: 180, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 719, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 10785, Discounts: null, Sales: 10785, COGS: 8880, Profit: 1905, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3576, ManufacturingPrice: 3, SalePrice: 15, GrossSales: 53640, Discounts: null, Sales: 53640, COGS: 24700, Profit: 28940, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 4422, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1547700, Discounts: null, Sales: 1547700, COGS: 393380, Profit: 1154320, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3649, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 54735, Discounts: null, Sales: 54735, COGS: 9210, Profit: 45525, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 4172, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 50064, Discounts: null, Sales: 50064, COGS: 7554, Profit: 42510, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3841, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 76820, Discounts: null, Sales: 76820, COGS: 18990, Profit: 57830, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3726, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 44712, Discounts: null, Sales: 44712, COGS: 4635, Profit: 40077, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2625, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 39375, Discounts: null, Sales: 39375, COGS: 24700, Profit: 14675, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1958, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 244750, Discounts: null, Sales: 244750, COGS: 319860, Profit: 75110, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 3271, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 981300, Discounts: null, Sales: 981300, COGS: 239500, Profit: 741800, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2091, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 14637, Discounts: null, Sales: 14637, COGS: 10730, Profit: 3907, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 2825, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 42375, Discounts: null, Sales: 42375, COGS: 6150, Profit: 36225, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2513, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 50260, Discounts: null, Sales: 50260, COGS: 2920, Profit: 47340, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 883, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 13245, Discounts: null, Sales: 13245, COGS: 9740, Profit: 3505, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 2087, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 25044, Discounts: null, Sales: 25044, COGS: 7554, Profit: 17490, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2563, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 897050, Discounts: null, Sales: 897050, COGS: 261560, Profit: 635490, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2846, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 34152, Discounts: null, Sales: 34152, COGS: 1101, Profit: 33051, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 997, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 6979, Discounts: null, Sales: 6979, COGS: 4415, Profit: 2564, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2290, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 34350, Discounts: null, Sales: 34350, COGS: 24720, Profit: 9630, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2133, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 14931, Discounts: null, Sales: 14931, COGS: 5715, Profit: 9216, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3617, ManufacturingPrice: 10, SalePrice: 20, GrossSales: 72340, Discounts: null, Sales: 72340, COGS: 18170, Profit: 54170, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 1266, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 443100, Discounts: null, Sales: 443100, COGS: 393380, Profit: 49720, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 894, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 6258, Discounts: null, Sales: 6258, COGS: 7465, Profit: 1207, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 2725, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 340625, Discounts: null, Sales: 340625, COGS: 216480, Profit: 124145, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3061, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 36732, Discounts: null, Sales: 36732, COGS: 6483, Profit: 30249, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3958, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 1385300, Discounts: null, Sales: 1385300, COGS: 261560, Profit: 1123740, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 3920, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 47040, Discounts: null, Sales: 47040, COGS: 4635, Profit: 42405, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 3381, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 422625, Discounts: null, Sales: 422625, COGS: 338520, Profit: 84105, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4307, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 1292100, Discounts: null, Sales: 1292100, COGS: 500250, Profit: 791850, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 878, ManufacturingPrice: 250, SalePrice: 12, GrossSales: 10536, Discounts: null, Sales: 10536, COGS: 8514, Profit: 2022, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 496, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 7440, Discounts: null, Sales: 7440, COGS: 21780, Profit: 14340, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3367, ManufacturingPrice: 250, SalePrice: 15, GrossSales: 50505, Discounts: null, Sales: 50505, COGS: 8880, Profit: 41625, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2055, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 616500, Discounts: null, Sales: 616500, COGS: 537750, Profit: 78750, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 4041, ManufacturingPrice: 250, SalePrice: 20, GrossSales: 80820, Discounts: null, Sales: 80820, COGS: 18170, Profit: 62650, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 3237, ManufacturingPrice: 260, SalePrice: 350, GrossSales: 1132950, Discounts: null, Sales: 1132950, COGS: 715000, Profit: 417950, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 630, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 7560, Discounts: null, Sales: 7560, COGS: 5859, Profit: 1701, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4210, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 526250, Discounts: null, Sales: 526250, COGS: 506340, Profit: 19910, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 1127, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 22540, Discounts: null, Sales: 22540, COGS: 18990, Profit: 3550, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3438, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 24066, Discounts: null, Sales: 24066, COGS: 8430, Profit: 15636, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2015, ManufacturingPrice: 260, SalePrice: 12, GrossSales: 24180, Discounts: null, Sales: 24180, COGS: 6423, Profit: 17757, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 2534, ManufacturingPrice: 260, SalePrice: 7, GrossSales: 17738, Discounts: null, Sales: 17738, COGS: 5715, Profit: 12023, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 1384, ManufacturingPrice: 260, SalePrice: 15, GrossSales: 20760, Discounts: null, Sales: 20760, COGS: 6150, Profit: 14610, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 3561, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 24927, Discounts: 276.15, Sales: 24650.85, COGS: 19725, Profit: 4925.85, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 1823, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 27345, Discounts: 344.4, Sales: 27000.6, COGS: 22960, Profit: 4040.6, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2795, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 19565, Discounts: 72.1, Sales: 19492.9, COGS: 5150, Profit: 14342.9, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 457, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 3199, Discounts: 44.73, Sales: 3154.27, COGS: 3195, Profit: 40.73, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3785, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 26495, Discounts: 92.82, Sales: 26402.18, COGS: 6630, Profit: 19772.18, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 748, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 8976, Discounts: 222.96, Sales: 8753.04, COGS: 5574, Profit: 3179.04, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 1021, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 357350, Discounts: 4235, Sales: 353115, COGS: 314600, Profit: 38515, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 2076, ManufacturingPrice: 3, SalePrice: 7, GrossSales: 14532, Discounts: 177.03, Sales: 14354.97, COGS: 12645, Profit: 1709.97, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 4316, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 51792, Discounts: 173.4, Sales: 51618.6, COGS: 4335, Profit: 47283.6, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 4174, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 50088, Discounts: 320.52, Sales: 49767.48, COGS: 8013, Profit: 41754.48, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Kensington`, UnitsSold: 3736, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 1307600, Discounts: 4889.5, Sales: 1302710.5, COGS: 363220, Profit: 939490.5, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 1914, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 669900, Discounts: 7542.5, Sales: 662357.5, COGS: 560300, Profit: 102057.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 2742, ManufacturingPrice: 5, SalePrice: 15, GrossSales: 41130, Discounts: 332.1, Sales: 40797.9, COGS: 22140, Profit: 18657.9, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 1499, ManufacturingPrice: 5, SalePrice: 300, GrossSales: 449700, Discounts: 6903, Sales: 442797, COGS: 575250, Profit: 132453, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3772, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 75440, Discounts: 275.1, Sales: 75164.9, COGS: 13755, Profit: 61409.9, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Royal Oak`, UnitsSold: 1112, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 7784, Discounts: 128.1, Sales: 7655.9, COGS: 9150, Profit: 1494.1, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 2368, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 35520, Discounts: 227.1, Sales: 35292.9, COGS: 15140, Profit: 20152.9, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 1586, ManufacturingPrice: 10, SalePrice: 7, GrossSales: 11102, Discounts: 314.48, Sales: 10787.52, COGS: 22462.5, Profit: 11674.98, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3386, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 423250, Discounts: 908.75, Sales: 422341.25, COGS: 87240, Profit: 335101.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 852, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 106500, Discounts: 983.75, Sales: 105516.25, COGS: 94440, Profit: 11076.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 2783, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 347875, Discounts: 2278.75, Sales: 345596.25, COGS: 218760, Profit: 126836.25, Date: `07/01/2020`, MonthName: `July`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 2684, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 40260, Discounts: 112.05, Sales: 40147.95, COGS: 7470, Profit: 32677.95, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 4083, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1224900, Discounts: 8715, Sales: 1216185, COGS: 726250, Profit: 489935, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2816, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 985600, Discounts: 7542.5, Sales: 978057.5, COGS: 560300, Profit: 417757.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 4294, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 85880, Discounts: 772.8, Sales: 85107.2, COGS: 38640, Profit: 46467.2, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2856, ManufacturingPrice: 120, SalePrice: 7, GrossSales: 19992, Discounts: 25.34, Sales: 19966.66, COGS: 1810, Profit: 18156.66, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Burlington`, UnitsSold: 1407, ManufacturingPrice: 120, SalePrice: 125, GrossSales: 175875, Discounts: 1153.75, Sales: 174721.25, COGS: 110760, Profit: 63961.25, Date: `08/01/2020`, MonthName: `August`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1265, ManufacturingPrice: 250, SalePrice: 7, GrossSales: 8855, Discounts: 18.41, Sales: 8836.59, COGS: 1315, Profit: 7521.59, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3892, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1362200, Discounts: 3302.25, Sales: 1358897.75, COGS: 245310, Profit: 1113587.75, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Mandarin`, UnitsSold: 3068, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 383500, Discounts: 908.75, Sales: 382591.25, COGS: 87240, Profit: 295351.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 2181, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 272625, Discounts: 983.75, Sales: 271641.25, COGS: 94440, Profit: 177201.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 1356, ManufacturingPrice: 250, SalePrice: 300, GrossSales: 406800, Discounts: 2958, Sales: 403842, COGS: 246500, Profit: 177201.25, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 1814, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 634900, Discounts: 4889.5, Sales: 630010.5, COGS: 363220, Profit: 266790.5, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Mandarin`, UnitsSold: 1495, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 186875, Discounts: 2180, Sales: 184695, COGS: 209280, Profit: 24585, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 1463, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 182875, Discounts: 1856.25, Sales: 181018.75, COGS: 89100, Profit: 91918.75, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 215, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 2580, Discounts: 310.8, Sales: 2269.2, COGS: 3885, Profit: 1615.8, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Kensington`, UnitsSold: 566, ManufacturingPrice: 3, SalePrice: 350, GrossSales: 198100, Discounts: 19964, Sales: 178136, COGS: 741520, Profit: 563384, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 3255, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 39060, Discounts: 274.08, Sales: 38785.92, COGS: 3426, Profit: 35359.92, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Royal Oak`, UnitsSold: 772, ManufacturingPrice: 5, SalePrice: 20, GrossSales: 15440, Discounts: 626.4, Sales: 14813.6, COGS: 15660, Profit: 846.4, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Royal Oak`, UnitsSold: 1135, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 13620, Discounts: 165.6, Sales: 13454.4, COGS: 2070, Profit: 11384.4, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1193, ManufacturingPrice: 10, SalePrice: 15, GrossSales: 17895, Discounts: 708.9, Sales: 17186.1, COGS: 23630, Profit: 6443.9, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2530, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 759000, Discounts: 5508, Sales: 753492, COGS: 229500, Profit: 523992, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3451, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 1035300, Discounts: 10368, Sales: 1024932, COGS: 432000, Profit: 592932, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Vermont`, UnitsSold: 3059, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 36708, Discounts: 274.08, Sales: 36433.92, COGS: 3426, Profit: 33007.92, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 3957, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 494625, Discounts: 1655, Sales: 492970, COGS: 79440, Profit: 413530, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3444, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 41328, Discounts: 310.8, Sales: 41017.2, COGS: 3885, Profit: 37132.2, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3154, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 946200, Discounts: 11496, Sales: 934704, COGS: 479000, Profit: 455704, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 4108, ManufacturingPrice: 10, SalePrice: 350, GrossSales: 1437800, Discounts: 19964, Sales: 1417836, COGS: 741520, Profit: 676316, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 3760, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 470000, Discounts: 6822.5, Sales: 463177.5, COGS: 327480, Profit: 135697.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2334, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 28008, Discounts: 253.2, Sales: 27754.8, COGS: 3165, Profit: 24589.8, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Vermont`, UnitsSold: 580, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 6960, Discounts: 260.16, Sales: 6699.84, COGS: 3252, Profit: 3447.84, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Burlington`, UnitsSold: 2610, ManufacturingPrice: 120, SalePrice: 20, GrossSales: 52200, Discounts: 626.4, Sales: 51573.6, COGS: 15660, Profit: 35913.6, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Burlington`, UnitsSold: 1459, ManufacturingPrice: 120, SalePrice: 350, GrossSales: 510650, Discounts: 20139, Sales: 490511, COGS: 748020, Profit: 257509, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Burlington`, UnitsSold: 3774, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 45288, Discounts: 253.2, Sales: 45034.8, COGS: 3165, Profit: 41869.8, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Burlington`, UnitsSold: 2572, ManufacturingPrice: 120, SalePrice: 12, GrossSales: 30864, Discounts: 260.16, Sales: 30603.84, COGS: 3252, Profit: 27351.84, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Mandarin`, UnitsSold: 320, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 40000, Discounts: 1655, Sales: 38345, COGS: 79440, Profit: 41095, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Mandarin`, UnitsSold: 3275, ManufacturingPrice: 250, SalePrice: 350, GrossSales: 1146250, Discounts: 20139, Sales: 1126111, COGS: 748020, Profit: 378091, Date: `10/01/2020`, MonthName: `October`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Mandarin`, UnitsSold: 3582, ManufacturingPrice: 250, SalePrice: 125, GrossSales: 447750, Discounts: 6822.5, Sales: 440927.5, COGS: 327480, Profit: 113447.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 4056, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 1216800, Discounts: 1554, Sales: 1215246, COGS: 64750, Profit: 1150496, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Brazil`, Product: `Luxe`, UnitsSold: 2144, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 643200, Discounts: 6606, Sales: 636594, COGS: 275250, Profit: 361344, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Luxe`, UnitsSold: 3502, ManufacturingPrice: 260, SalePrice: 125, GrossSales: 437750, Discounts: 5690, Sales: 432060, COGS: 273120, Profit: 158940, Date: `05/01/2020`, MonthName: `May`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Luxe`, UnitsSold: 679, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 13580, Discounts: 494.4, Sales: 13085.6, COGS: 12360, Profit: 725.6, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Luxe`, UnitsSold: 2351, ManufacturingPrice: 260, SalePrice: 20, GrossSales: 47020, Discounts: 376.4, Sales: 46643.6, COGS: 9410, Profit: 37233.6, Date: `11/01/2020`, MonthName: `November`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Luxe`, UnitsSold: 2043, ManufacturingPrice: 260, SalePrice: 300, GrossSales: 612900, Discounts: 11496, Sales: 601404, COGS: 479000, Profit: 122404, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Kensington`, UnitsSold: 3565, ManufacturingPrice: 3, SalePrice: 125, GrossSales: 445625, Discounts: 15913.13, Sales: 429711.88, COGS: 509220, Profit: 79508.13, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 1401, ManufacturingPrice: 3, SalePrice: 20, GrossSales: 28020, Discounts: 1548, Sales: 26472, COGS: 25800, Profit: 672, Date: `04/01/2020`, MonthName: `April`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Kensington`, UnitsSold: 2077, ManufacturingPrice: 3, SalePrice: 300, GrossSales: 623100, Discounts: 6201, Sales: 616899, COGS: 172250, Profit: 444649, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `USA`, Product: `Kensington`, UnitsSold: 3643, ManufacturingPrice: 3, SalePrice: 12, GrossSales: 43716, Discounts: 700.92, Sales: 43015.08, COGS: 5841, Profit: 37174.08, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 2960, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 20720, Discounts: 411.18, Sales: 20308.82, COGS: 9790, Profit: 10518.82, Date: `02/01/2020`, MonthName: `February`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 1201, ManufacturingPrice: 5, SalePrice: 12, GrossSales: 14412, Discounts: 684.36, Sales: 13727.64, COGS: 5703, Profit: 8024.64, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 2321, ManufacturingPrice: 5, SalePrice: 7, GrossSales: 16247, Discounts: 114.24, Sales: 16132.76, COGS: 2720, Profit: 13412.76, Date: `09/01/2020`, MonthName: `September`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Royal Oak`, UnitsSold: 3972, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 496500, Discounts: 4826.25, Sales: 491673.75, COGS: 154440, Profit: 337233.75, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Royal Oak`, UnitsSold: 3878, ManufacturingPrice: 5, SalePrice: 125, GrossSales: 484750, Discounts: 6397.5, Sales: 478352.5, COGS: 204720, Profit: 273632.5, Date: `12/01/2020`, MonthName: `December`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 2278, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 683400, Discounts: 21910.5, Sales: 661489.5, COGS: 608625, Profit: 52864.5, Date: `01/01/2020`, MonthName: `January`, Year: 2020 }), + new PivotSalesDataItem({ Country: `Japan`, Product: `Vermont`, UnitsSold: 1075, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 134375, Discounts: 6652.5, Sales: 127722.5, COGS: 212880, Profit: 85157.5, Date: `03/01/2020`, MonthName: `March`, Year: 2020 }), + new PivotSalesDataItem({ Country: `UK`, Product: `Vermont`, UnitsSold: 4050, ManufacturingPrice: 10, SalePrice: 12, GrossSales: 48600, Discounts: 684.36, Sales: 47915.64, COGS: 5703, Profit: 42212.64, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3035, ManufacturingPrice: 10, SalePrice: 300, GrossSales: 910500, Discounts: 6201, Sales: 904299, COGS: 172250, Profit: 732049, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }), + new PivotSalesDataItem({ Country: `India`, Product: `Vermont`, UnitsSold: 3636, ManufacturingPrice: 10, SalePrice: 125, GrossSales: 454500, Discounts: 5887.5, Sales: 448612.5, COGS: 188400, Profit: 260212.5, Date: `06/01/2020`, MonthName: `June`, Year: 2020 }) + ]; + super(...newItems.slice(0)); } + } } From 5a90b1306e8cbcca09066da014dcbf0bf09106a2 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Tue, 7 Jul 2026 11:27:08 +0300 Subject: [PATCH 11/23] fix(query-builder): refactor the smaples --- .../query-builder/overview/src/index.tsx | 245 +++---- .../query-builder/template/src/index.tsx | 613 +++++++++--------- 2 files changed, 394 insertions(+), 464 deletions(-) diff --git a/samples/interactions/query-builder/overview/src/index.tsx b/samples/interactions/query-builder/overview/src/index.tsx index d1aed10fbb..93a32da5f8 100644 --- a/samples/interactions/query-builder/overview/src/index.tsx +++ b/samples/interactions/query-builder/overview/src/index.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import { useRef, useState, useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import { @@ -24,143 +24,59 @@ interface Entity { fields: Field[]; } -interface SampleState { - expressionTree: IgrExpressionTree | null; -} - -export default class Sample extends React.Component { - private queryBuilderRef: React.RefObject; - private gridRef: React.RefObject; - - constructor(props: any) { - super(props); - - this.queryBuilderRef = React.createRef(); - this.gridRef = React.createRef(); - - this.state = { - expressionTree: null - }; - } - - componentDidMount() { - // Initialize expression tree - const tree = new IgrFilteringExpressionsTree(); - tree.operator = FilteringLogic.And; - tree.entity = 'Orders'; - tree.returnFields = [ - 'orderId', - 'customerId', - 'employeeId', - 'shipperId', - 'orderDate', - 'requiredDate', - 'shipVia', - 'freight', - 'shipName', - 'completed' - ]; - - this.setState({ expressionTree: tree }); - - // Set up query builder - if (this.queryBuilderRef.current && tree) { - const queryBuilder = this.queryBuilderRef.current; - queryBuilder.entities = this.entities as any; - queryBuilder.expressionTree = tree; - - queryBuilder.addEventListener('expressionTreeChange', this.handleExpressionTreeChange); - } - - // Set up grid - if (this.gridRef.current) { - const grid = this.gridRef.current; - grid.height = '420px'; - grid.autoGenerate = true; - } - } - - componentDidUpdate(prevProps: any, prevState: any) { - // Fetch data when expression tree changes - if (prevState.expressionTree !== this.state.expressionTree && this.state.expressionTree) { - this.fetchData(); - } - - // Update query builder if expression tree changed - if (this.queryBuilderRef.current && this.state.expressionTree && - prevState.expressionTree !== this.state.expressionTree) { - const queryBuilder = this.queryBuilderRef.current; - queryBuilder.expressionTree = this.state.expressionTree; - } - } - - componentWillUnmount() { - if (this.queryBuilderRef.current) { - this.queryBuilderRef.current.removeEventListener('expressionTreeChange', this.handleExpressionTreeChange); - } - } - - private handleExpressionTreeChange = (event: any) => { - this.setState({ expressionTree: event.detail }); - }; - - private get customersFields(): Field[] { - return [ - { field: 'customerId', dataType: 'string' }, - { field: 'companyName', dataType: 'string' }, - { field: 'contactName', dataType: 'string' }, - { field: 'contactTitle', dataType: 'string' } - ]; - } - - private get ordersFields(): Field[] { - return [ - { field: 'orderId', dataType: 'number' }, - { field: 'customerId', dataType: 'string' }, - { field: 'employeeId', dataType: 'number' }, - { field: 'shipperId', dataType: 'number' }, - { field: 'orderDate', dataType: 'date' }, - { field: 'requiredDate', dataType: 'date' }, - { field: 'shipVia', dataType: 'string' }, - { field: 'freight', dataType: 'number' }, - { field: 'shipName', dataType: 'string' }, - { field: 'completed', dataType: 'boolean' } - ]; - } - - private get entities(): Entity[] { - return [ - { name: 'Customers', fields: this.customersFields }, - { name: 'Orders', fields: this.ordersFields } - ]; - } - - private calculateColumnsInView = () => { - if (!this.gridRef.current || !this.state.expressionTree) return; - - const grid = this.gridRef.current; - const expressionTree = this.state.expressionTree; - const returnFields = expressionTree.returnFields ?? []; +const customersFields: Field[] = [ + { field: 'customerId', dataType: 'string' }, + { field: 'companyName', dataType: 'string' }, + { field: 'contactName', dataType: 'string' }, + { field: 'contactTitle', dataType: 'string' } +]; + +const ordersFields: Field[] = [ + { field: 'orderId', dataType: 'number' }, + { field: 'customerId', dataType: 'string' }, + { field: 'employeeId', dataType: 'number' }, + { field: 'shipperId', dataType: 'number' }, + { field: 'orderDate', dataType: 'date' }, + { field: 'requiredDate', dataType: 'date' }, + { field: 'shipVia', dataType: 'string' }, + { field: 'freight', dataType: 'number' }, + { field: 'shipName', dataType: 'string' }, + { field: 'completed', dataType: 'boolean' } +]; + +const entities: Entity[] = [ + { name: 'Customers', fields: customersFields }, + { name: 'Orders', fields: ordersFields } +]; + +function Sample() { + const queryBuilderRef = useRef(null); + const gridRef = useRef(null); + const [expressionTree, setExpressionTree] = useState(null); + + const calculateColumnsInView = (tree: IgrExpressionTree) => { + if (!gridRef.current) return; + + const grid = gridRef.current; + const returnFields = tree.returnFields ?? []; if (returnFields.length === 0 || returnFields[0] === '*') { - const selectedEntity = this.entities.find(e => e.name === expressionTree.entity); + const selectedEntity = entities.find(e => e.name === tree.entity); const selectedEntityFields = (selectedEntity?.fields ?? []).map(f => f.field); - - grid.columns.forEach(column => { + + grid.columns.forEach((column: any) => { column.hidden = !selectedEntityFields.includes(column.field); }); } else { - grid.columns.forEach(column => { + grid.columns.forEach((column: any) => { column.hidden = !returnFields.includes(column.field); }); } }; - private async fetchData() { - const grid = this.gridRef.current; - const expressionTree = this.state.expressionTree; - - if (!grid || !expressionTree) return; + const fetchData = async (tree: IgrExpressionTree) => { + const grid = gridRef.current; + if (!grid) return; grid.isLoading = true; @@ -168,7 +84,7 @@ export default class Sample extends React.Component { const response = await fetch(`${API_ENDPOINT}/QueryBuilder/ExecuteQuery`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(expressionTree) + body: JSON.stringify(tree) }); if (!response.ok) { @@ -179,32 +95,75 @@ export default class Sample extends React.Component { const data = (Object.values(json)[0] as any[]) ?? []; grid.data = data; - // Calculate column visibility after data loads await new Promise(resolve => requestAnimationFrame(() => resolve(null))); - this.calculateColumnsInView(); + calculateColumnsInView(tree); } catch (err) { console.error(err); grid.data = []; } finally { grid.isLoading = false; } - } - - public render(): JSX.Element { - return ( -
-
- - -
- -
+ }; + + const handleExpressionTreeChange = (event: any) => { + setExpressionTree(event.detail); + fetchData(event.detail); + }; + + useEffect(() => { + const tree = new IgrFilteringExpressionsTree(); + tree.operator = FilteringLogic.And; + tree.entity = 'Orders'; + tree.returnFields = [ + 'orderId', + 'customerId', + 'employeeId', + 'shipperId', + 'orderDate', + 'requiredDate', + 'shipVia', + 'freight', + 'shipName', + 'completed' + ]; + + if (gridRef.current) { + gridRef.current.height = '420px'; + gridRef.current.autoGenerate = true; + } + + if (queryBuilderRef.current) { + const queryBuilder = queryBuilderRef.current; + queryBuilder.entities = entities as any; + queryBuilder.expressionTree = tree; + queryBuilder.addEventListener('expressionTreeChange', handleExpressionTreeChange); + } + + setExpressionTree(tree); + fetchData(tree); + + return () => { + if (queryBuilderRef.current) { + queryBuilderRef.current.removeEventListener('expressionTreeChange', handleExpressionTreeChange); + } + }; + }, []); + + return ( +
+
+ + +
+
- ); - } +
+ ); } +export default Sample; + // rendering above component in the React DOM const root = ReactDOM.createRoot(document.getElementById('root')); root.render(); diff --git a/samples/interactions/query-builder/template/src/index.tsx b/samples/interactions/query-builder/template/src/index.tsx index 9b5ad469b9..9fc02db90e 100644 --- a/samples/interactions/query-builder/template/src/index.tsx +++ b/samples/interactions/query-builder/template/src/index.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import { useRef, useState, useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; @@ -72,359 +72,330 @@ interface QueryBuilderSearchValueContext { defaultSearchValueTemplate?: any; } -interface SampleState { - expressionTree: IgrExpressionTree | null; -} +const regionOptions: RegionOption[] = [ + { text: 'Central North America', value: 'CNA' }, + { text: 'Central Europe', value: 'CEU' }, + { text: 'Mediterranean region', value: 'MED' }, + { text: 'Central Asia', value: 'CAS' }, + { text: 'South Asia', value: 'SAS' }, + { text: 'Western Africa', value: 'WAF' }, + { text: 'Amazonia', value: 'AMZ' }, + { text: 'Southern Africa', value: 'SAF' }, + { text: 'Northern Australia', value: 'NAU' } +]; -export default class Sample extends React.Component { - private queryBuilderRef: React.RefObject; - private expressionOutputRef: React.RefObject; - - private regionOptions: RegionOption[] = [ - { text: 'Central North America', value: 'CNA' }, - { text: 'Central Europe', value: 'CEU' }, - { text: 'Mediterranean region', value: 'MED' }, - { text: 'Central Asia', value: 'CAS' }, - { text: 'South Asia', value: 'SAS' }, - { text: 'Western Africa', value: 'WAF' }, - { text: 'Amazonia', value: 'AMZ' }, - { text: 'Southern Africa', value: 'SAF' }, - { text: 'Northern Australia', value: 'NAU' } - ]; - - private statusOptions: StatusOption[] = [ - { text: 'New', value: 1 }, - { text: 'Shipped', value: 2 }, - { text: 'Done', value: 3 } - ]; - - constructor(props: any) { - super(props); - - this.queryBuilderRef = React.createRef(); - this.expressionOutputRef = React.createRef(); - - this.state = { - expressionTree: null - }; +const statusOptions: StatusOption[] = [ + { text: 'New', value: 1 }, + { text: 'Shipped', value: 2 }, + { text: 'Done', value: 3 } +]; + +const ordersFields: Field[] = [ + { field: 'CompanyID', dataType: 'string' }, + { field: 'OrderID', dataType: 'number' }, + { field: 'Freight', dataType: 'number' }, + { field: 'ShipCountry', dataType: 'string' }, + { field: 'IsRushOrder', dataType: 'boolean' }, + { + field: 'RequiredTime', + dataType: 'time', + formatter: (value: any) => { + if (!value || !(value instanceof Date)) return ''; + return value.toLocaleTimeString('en-US', { + hour: '2-digit', + minute: '2-digit' + }); + } + }, + { + field: 'OrderDate', + dataType: 'date', + formatter: (value: any) => { + if (!value || !(value instanceof Date)) return ''; + return value.toLocaleDateString('en-US', { + month: 'short', + day: 'numeric', + year: 'numeric' + }); + } + }, + { + field: 'Region', + dataType: 'string', + formatter: (value: any) => value?.text ?? value?.value ?? value + }, + { + field: 'OrderStatus', + dataType: 'number', + formatter: (value: number) => statusOptions.find(option => option.value === value)?.text ?? value } +]; - componentDidMount() { - // Initialize expression tree - const tree = new IgrFilteringExpressionsTree(); - tree.operator = FilteringLogic.And; - tree.entity = 'Orders'; - tree.returnFields = ['*']; - tree.filteringOperands.push({ - fieldName: 'Region', - condition: IgrStringFilteringOperand.instance().condition('equals'), - conditionName: 'equals', - searchVal: this.regionOptions[0] - } as any); - tree.filteringOperands.push({ - fieldName: 'OrderStatus', - condition: IgrStringFilteringOperand.instance().condition('equals'), - conditionName: 'equals', - searchVal: this.statusOptions[0].value - } as any); +const entities: Entity[] = [ + { + name: 'Orders', + fields: ordersFields + } +]; - this.setState({ expressionTree: tree }); +const setImplicitValue = (ctx: QueryBuilderSearchValueContext, value: any) => { + queueMicrotask(() => { + ctx.implicit.value = value; + }); +}; - // Set up query builder - if (this.queryBuilderRef.current && tree) { - const queryBuilder = this.queryBuilderRef.current; - queryBuilder.entities = this.entities as any; - queryBuilder.expressionTree = tree; +const normalizeTimeValue = (value: unknown): Date | null => { + if (!value) return null; + if (value instanceof Date) return value; - queryBuilder.addEventListener('expressionTreeChange', this.handleExpressionTreeChange); - } + if (typeof value === 'string') { + const isoCandidate = value.includes('T') ? value : `1970-01-01T${value}`; + const parsed = new Date(isoCandidate); + return isNaN(parsed.getTime()) ? null : parsed; } - componentDidUpdate(prevProps: any, prevState: any) { - // Update query builder if expression tree changed - if (this.queryBuilderRef.current && this.state.expressionTree && - prevState.expressionTree !== this.state.expressionTree) { - const queryBuilder = this.queryBuilderRef.current; - queryBuilder.expressionTree = this.state.expressionTree; - } - - // Render expression tree output - if (this.expressionOutputRef.current && this.state.expressionTree && - prevState.expressionTree !== this.state.expressionTree) { - this.expressionOutputRef.current.textContent = JSON.stringify(this.state.expressionTree, null, 2); - } + if (typeof value === 'number') { + const parsed = new Date(value); + return isNaN(parsed.getTime()) ? null : parsed; } - componentWillUnmount() { - if (this.queryBuilderRef.current) { - this.queryBuilderRef.current.removeEventListener('expressionTreeChange', this.handleExpressionTreeChange); - } + return null; +}; + +const buildRegionSelect = (ctx: QueryBuilderSearchValueContext) => { + const currentValue = ctx?.implicit?.value?.value ?? ''; + const key = `region-select-${currentValue}`; + + return ( + { + const value = sender.value; + const currentKey = ctx?.implicit?.value?.value ?? ''; + + if (!value || value === currentKey) return; + + setImplicitValue(ctx, regionOptions.find(option => option.value === value) ?? null); + }}> + {regionOptions.map(option => ( + + {option.text} + + ))} + + ); +}; + +const buildStatusRadios = (ctx: QueryBuilderSearchValueContext) => { + const implicitValue = ctx.implicit?.value; + const currentValue = implicitValue == null ? '' : implicitValue.toString(); + + return ( + + {statusOptions.map(option => ( + { + if (!e.detail.checked) return; + const numericValue = Number(e.detail.value); + if (ctx.implicit.value === numericValue) return; + setImplicitValue(ctx, numericValue); + }}> + {option.text} + + ))} + + ); +}; + +const buildDatePicker = (ctx: QueryBuilderSearchValueContext) => { + const implicitValue = ctx.implicit?.value; + const currentValue = implicitValue instanceof Date + ? implicitValue + : implicitValue + ? new Date(implicitValue) + : null; + + const allowedConditions = ['equals', 'doesNotEqual', 'before', 'after']; + const isEnabled = allowedConditions.indexOf(ctx.selectedCondition ?? '') !== -1; + const key = `date-picker-${currentValue}`; + + return ( + sender.show()} + change={(sender: any) => { + setImplicitValue(ctx, sender.value); + }}> + + ); +}; + +const buildTimeInput = (ctx: QueryBuilderSearchValueContext) => { + const currentValue = normalizeTimeValue(ctx.implicit?.value); + const allowedConditions = ['at', 'not_at', 'at_before', 'at_after', 'before', 'after']; + const isDisabled = ctx.selectedField == null || allowedConditions.indexOf(ctx.selectedCondition ?? '') === -1; + const key = `time-input-${currentValue}`; + + return ( + { + setImplicitValue(ctx, sender.value); + }}> +
+ +
+
+ ); +}; + +const buildDefaultInput = (ctx: QueryBuilderSearchValueContext, matchesEqualityCondition: boolean) => { + const selectedField = ctx.selectedField; + const dataType = selectedField?.dataType; + const isNumber = dataType === 'number'; + const isBoolean = dataType === 'boolean'; + + const placeholder = ctx.selectedCondition === 'inQuery' || ctx.selectedCondition === 'notInQuery' + ? 'Sub-query results' + : 'Value'; + + const currentValue = typeof ctx.implicit?.value === 'object' && (ctx.implicit.value && 'text' in ctx.implicit.value) + ? matchesEqualityCondition ? ctx.implicit.value.text : '' + : ctx.implicit?.value; + + const inputValue = currentValue == null ? '' : currentValue; + const disabledConditions = ['empty', 'notEmpty', 'null', 'notNull', 'inQuery', 'notInQuery']; + const isDisabled = isBoolean || selectedField == null || disabledConditions.indexOf(ctx.selectedCondition ?? '') !== -1; + const key = `default-input-${inputValue}`; + + return ( + { + const value = sender.value; + setImplicitValue(ctx, isNumber + ? value === '' ? null : Number(value) + : value); + }}> + + ); +}; + +const buildSearchValueTemplate = (ctx: QueryBuilderSearchValueContext) => { + const field = ctx.selectedField?.field; + const condition = ctx.selectedCondition; + const matchesEqualityCondition = condition === 'equals' || condition === 'doesNotEqual'; + + if (!ctx.implicit) { + ctx.implicit = { value: null }; } - private handleExpressionTreeChange = (event: any) => { - this.setState({ expressionTree: event.detail }); - }; + if (field === 'Region' && matchesEqualityCondition) { + return buildRegionSelect(ctx); + } - private get ordersFields(): Field[] { - return [ - { field: 'CompanyID', dataType: 'string' }, - { field: 'OrderID', dataType: 'number' }, - { field: 'Freight', dataType: 'number' }, - { field: 'ShipCountry', dataType: 'string' }, - { field: 'IsRushOrder', dataType: 'boolean' }, - { - field: 'RequiredTime', - dataType: 'time', - formatter: (value: any) => { - if (!value || !(value instanceof Date)) return ''; - return value.toLocaleTimeString('en-US', { - hour: '2-digit', - minute: '2-digit' - }); - } - }, - { - field: 'OrderDate', - dataType: 'date', - formatter: (value: any) => { - if (!value || !(value instanceof Date)) return ''; - return value.toLocaleDateString('en-US', { - month: 'short', - day: 'numeric', - year: 'numeric' - }); - } - }, - { - field: 'Region', - dataType: 'string', - formatter: (value: any) => value?.text ?? value?.value ?? value - }, - { - field: 'OrderStatus', - dataType: 'number', - formatter: (value: number) => this.statusOptions.find(option => option.value === value)?.text ?? value - } - ]; + if (field === 'OrderStatus' && matchesEqualityCondition) { + return buildStatusRadios(ctx); } - private get entities(): Entity[] { - return [ - { - name: 'Orders', - fields: this.ordersFields - } - ]; + if (ctx.selectedField?.dataType === 'date') { + return buildDatePicker(ctx); } - private setImplicitValue(ctx: QueryBuilderSearchValueContext, value: any) { - queueMicrotask(() => { - ctx.implicit.value = value; - }); + if (ctx.selectedField?.dataType === 'time') { + return buildTimeInput(ctx); } - private normalizeTimeValue = (value: unknown): Date | null => { - if (!value) return null; - if (value instanceof Date) return value; - - if (typeof value === 'string') { - const isoCandidate = value.includes('T') ? value : `1970-01-01T${value}`; - const parsed = new Date(isoCandidate); - return isNaN(parsed.getTime()) ? null : parsed; - } - - if (typeof value === 'number') { - const parsed = new Date(value); - return isNaN(parsed.getTime()) ? null : parsed; - } - - return null; - }; + return buildDefaultInput(ctx, matchesEqualityCondition); +}; - private buildSearchValueTemplate = (ctx: QueryBuilderSearchValueContext) => { - const field = ctx.selectedField?.field; - const condition = ctx.selectedCondition; - const matchesEqualityCondition = condition === 'equals' || condition === 'doesNotEqual'; +function Sample() { + const queryBuilderRef = useRef(null); + const expressionOutputRef = useRef(null); + const [expressionTree, setExpressionTree] = useState(null); - if (!ctx.implicit) { - ctx.implicit = { value: null }; + const handleExpressionTreeChange = (event: any) => { + setExpressionTree(event.detail); + if (expressionOutputRef.current) { + expressionOutputRef.current.textContent = JSON.stringify(event.detail, null, 2); } + }; - if (field === 'Region' && matchesEqualityCondition) { - return this.buildRegionSelect(ctx); - } + useEffect(() => { + const tree = new IgrFilteringExpressionsTree(); + tree.operator = FilteringLogic.And; + tree.entity = 'Orders'; + tree.returnFields = ['*']; + tree.filteringOperands.push({ + fieldName: 'Region', + condition: IgrStringFilteringOperand.instance().condition('equals'), + conditionName: 'equals', + searchVal: regionOptions[0] + } as any); + tree.filteringOperands.push({ + fieldName: 'OrderStatus', + condition: IgrStringFilteringOperand.instance().condition('equals'), + conditionName: 'equals', + searchVal: statusOptions[0].value + } as any); - if (field === 'OrderStatus' && matchesEqualityCondition) { - return this.buildStatusRadios(ctx); + if (queryBuilderRef.current) { + const queryBuilder = queryBuilderRef.current; + queryBuilder.entities = entities as any; + queryBuilder.expressionTree = tree; + queryBuilder.addEventListener('expressionTreeChange', handleExpressionTreeChange); } - if (ctx.selectedField?.dataType === 'date') { - return this.buildDatePicker(ctx); - } + setExpressionTree(tree); - if (ctx.selectedField?.dataType === 'time') { - return this.buildTimeInput(ctx); + if (expressionOutputRef.current) { + expressionOutputRef.current.textContent = JSON.stringify(tree, null, 2); } - return this.buildDefaultInput(ctx, matchesEqualityCondition); - }; - - private buildRegionSelect = (ctx: QueryBuilderSearchValueContext) => { - const currentValue = ctx?.implicit?.value?.value ?? ''; - const key = `region-select-${currentValue}`; - - return ( - { - const value = sender.value; - const currentKey = ctx?.implicit?.value?.value ?? ''; - - if (!value || value === currentKey) return; - - this.setImplicitValue(ctx, this.regionOptions.find(option => option.value === value) ?? null); - }}> - {this.regionOptions.map(option => ( - - {option.text} - - ))} - - ); - }; - - private buildStatusRadios = (ctx: QueryBuilderSearchValueContext) => { - const implicitValue = ctx.implicit?.value; - const currentValue = implicitValue == null ? '' : implicitValue.toString(); - - return ( - - {this.statusOptions.map(option => ( - { - if (!e.detail.checked) return; - const numericValue = Number(e.detail.value); - if (ctx.implicit.value === numericValue) return; - this.setImplicitValue(ctx, numericValue); - }}> - {option.text} - - ))} - - ); - }; - - private buildDatePicker = (ctx: QueryBuilderSearchValueContext) => { - const implicitValue = ctx.implicit?.value; - const currentValue = implicitValue instanceof Date - ? implicitValue - : implicitValue - ? new Date(implicitValue) - : null; - - const allowedConditions = ['equals', 'doesNotEqual', 'before', 'after']; - const isEnabled = allowedConditions.indexOf(ctx.selectedCondition ?? '') !== -1; - const key = `date-picker-${currentValue}`; - - return ( - sender.show()} - change={(sender: any) => { - this.setImplicitValue(ctx, sender.value); - }}> - - ); - }; - - private buildTimeInput = (ctx: QueryBuilderSearchValueContext) => { - const currentValue = this.normalizeTimeValue(ctx.implicit?.value); - const allowedConditions = ['at', 'not_at', 'at_before', 'at_after', 'before', 'after']; - const isDisabled = ctx.selectedField == null || allowedConditions.indexOf(ctx.selectedCondition ?? '') === -1; - const key = `time-input-${currentValue}`; - - return ( - { - this.setImplicitValue(ctx, sender.value); - }}> -
- -
-
- ); - }; - - private buildDefaultInput = (ctx: QueryBuilderSearchValueContext, matchesEqualityCondition: boolean) => { - const selectedField = ctx.selectedField; - const dataType = selectedField?.dataType; - const isNumber = dataType === 'number'; - const isBoolean = dataType === 'boolean'; - - const placeholder = ctx.selectedCondition === 'inQuery' || ctx.selectedCondition === 'notInQuery' - ? 'Sub-query results' - : 'Value'; - - const currentValue = typeof ctx.implicit?.value === 'object' && (ctx.implicit.value && 'text' in ctx.implicit.value) - ? matchesEqualityCondition ? ctx.implicit.value.text : '' - : ctx.implicit?.value; - - const inputValue = currentValue == null ? '' : currentValue; - const disabledConditions = ['empty', 'notEmpty', 'null', 'notNull', 'inQuery', 'notInQuery']; - const isDisabled = isBoolean || selectedField == null || disabledConditions.indexOf(ctx.selectedCondition ?? '') !== -1; - const key = `default-input-${inputValue}`; - - return ( - { - const value = sender.value; - this.setImplicitValue(ctx, isNumber - ? value === '' ? null : Number(value) - : value); - }}> - - ); - }; - - public render(): JSX.Element { - return ( -
-
- - - - -
-

-          
+ return () => { + if (queryBuilderRef.current) { + queryBuilderRef.current.removeEventListener('expressionTreeChange', handleExpressionTreeChange); + } + }; + }, []); + + return ( +
+
+ + + + +
+

         
- ); - } +
+ ); } +export default Sample; + // rendering above component in the React DOM const root = ReactDOM.createRoot(document.getElementById('root')); root.render(); From 6ee7d8e0c6075c34be1580dd1054b05ad36c7b24 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Tue, 7 Jul 2026 12:04:13 +0300 Subject: [PATCH 12/23] fix(query-builder): remove unused logic --- samples/interactions/query-builder/overview/src/index.tsx | 5 +---- samples/interactions/query-builder/template/src/index.tsx | 6 +----- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/samples/interactions/query-builder/overview/src/index.tsx b/samples/interactions/query-builder/overview/src/index.tsx index 93a32da5f8..1a2bb81481 100644 --- a/samples/interactions/query-builder/overview/src/index.tsx +++ b/samples/interactions/query-builder/overview/src/index.tsx @@ -1,4 +1,4 @@ -import { useRef, useState, useEffect } from 'react'; +import { useRef, useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import { @@ -52,7 +52,6 @@ const entities: Entity[] = [ function Sample() { const queryBuilderRef = useRef(null); const gridRef = useRef(null); - const [expressionTree, setExpressionTree] = useState(null); const calculateColumnsInView = (tree: IgrExpressionTree) => { if (!gridRef.current) return; @@ -106,7 +105,6 @@ function Sample() { }; const handleExpressionTreeChange = (event: any) => { - setExpressionTree(event.detail); fetchData(event.detail); }; @@ -139,7 +137,6 @@ function Sample() { queryBuilder.addEventListener('expressionTreeChange', handleExpressionTreeChange); } - setExpressionTree(tree); fetchData(tree); return () => { diff --git a/samples/interactions/query-builder/template/src/index.tsx b/samples/interactions/query-builder/template/src/index.tsx index 9fc02db90e..1625c18e71 100644 --- a/samples/interactions/query-builder/template/src/index.tsx +++ b/samples/interactions/query-builder/template/src/index.tsx @@ -1,4 +1,4 @@ -import { useRef, useState, useEffect } from 'react'; +import { useRef, useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; @@ -329,10 +329,8 @@ const buildSearchValueTemplate = (ctx: QueryBuilderSearchValueContext) => { function Sample() { const queryBuilderRef = useRef(null); const expressionOutputRef = useRef(null); - const [expressionTree, setExpressionTree] = useState(null); const handleExpressionTreeChange = (event: any) => { - setExpressionTree(event.detail); if (expressionOutputRef.current) { expressionOutputRef.current.textContent = JSON.stringify(event.detail, null, 2); } @@ -363,8 +361,6 @@ function Sample() { queryBuilder.addEventListener('expressionTreeChange', handleExpressionTreeChange); } - setExpressionTree(tree); - if (expressionOutputRef.current) { expressionOutputRef.current.textContent = JSON.stringify(tree, null, 2); } From 4b28c6ee272cb80875772f35c7ccc616874d3ebe Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Wed, 8 Jul 2026 14:03:53 +0300 Subject: [PATCH 13/23] fix(query-builder): add fixes --- .../query-builder/template/src/index.tsx | 31 +++---------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/samples/interactions/query-builder/template/src/index.tsx b/samples/interactions/query-builder/template/src/index.tsx index 1625c18e71..879841c760 100644 --- a/samples/interactions/query-builder/template/src/index.tsx +++ b/samples/interactions/query-builder/template/src/index.tsx @@ -4,45 +4,25 @@ import './index.css'; import { IgrQueryBuilder, - IgrQueryBuilderModule, IgrQueryBuilderHeader, IgrFilteringExpressionsTree, - IgrExpressionTree, FilteringLogic, IgrStringFilteringOperand } from 'igniteui-react-grids'; import { IgrDatePicker, - IgrDatePickerModule, IgrDateTimeInput, - IgrDateTimeInputModule, IgrSelect, - IgrSelectModule, IgrSelectItem, IgrRadioGroup, - IgrRadioGroupModule, IgrRadio, IgrInput, - IgrInputModule, - IgrIcon, - IgrIconModule + IgrIcon } from 'igniteui-react'; import 'igniteui-react-grids/grids/themes/light/material.css'; -// Register components -const mods: any[] = [ - IgrQueryBuilderModule, - IgrDatePickerModule, - IgrDateTimeInputModule, - IgrSelectModule, - IgrRadioGroupModule, - IgrInputModule, - IgrIconModule -]; -mods.forEach((m) => m.register()); - // Types interface Field { field: string; @@ -171,7 +151,7 @@ const buildRegionSelect = (ctx: QueryBuilderSearchValueContext) => { className="qb-select" key={key} value={currentValue} - change={(sender: any) => { + onChange={(sender: any) => { const value = sender.value; const currentKey = ctx?.implicit?.value?.value ?? ''; @@ -232,8 +212,7 @@ const buildDatePicker = (ctx: QueryBuilderSearchValueContext) => { key={key} value={currentValue} disabled={!isEnabled} - click={(sender: any) => sender.show()} - change={(sender: any) => { + onChange={(sender: any) => { setImplicitValue(ctx, sender.value); }}> @@ -252,7 +231,7 @@ const buildTimeInput = (ctx: QueryBuilderSearchValueContext) => { inputFormat="hh:mm tt" value={currentValue} disabled={isDisabled} - change={(sender: any) => { + onChange={(sender: any) => { setImplicitValue(ctx, sender.value); }}>
@@ -288,7 +267,7 @@ const buildDefaultInput = (ctx: QueryBuilderSearchValueContext, matchesEqualityC disabled={isDisabled} placeholder={placeholder} type={isNumber ? 'number' : 'text'} - input={(sender: any) => { + onInput={(sender: any) => { const value = sender.value; setImplicitValue(ctx, isNumber ? value === '' ? null : Number(value) From 529102ff0c1d41043665a244cf2c7f7d273ebce9 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 9 Jul 2026 11:31:38 +0300 Subject: [PATCH 14/23] fix(query-builder): fix input value --- samples/interactions/query-builder/template/src/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/interactions/query-builder/template/src/index.tsx b/samples/interactions/query-builder/template/src/index.tsx index 879841c760..58eb95a866 100644 --- a/samples/interactions/query-builder/template/src/index.tsx +++ b/samples/interactions/query-builder/template/src/index.tsx @@ -268,7 +268,7 @@ const buildDefaultInput = (ctx: QueryBuilderSearchValueContext, matchesEqualityC placeholder={placeholder} type={isNumber ? 'number' : 'text'} onInput={(sender: any) => { - const value = sender.value; + const value = sender.detail; setImplicitValue(ctx, isNumber ? value === '' ? null : Number(value) : value); From a4887bdb22b8ea4b7dd83bae565513c90931abf3 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 9 Jul 2026 14:02:27 +0300 Subject: [PATCH 15/23] fix(query-builder): fix missed values --- samples/interactions/query-builder/template/src/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/interactions/query-builder/template/src/index.tsx b/samples/interactions/query-builder/template/src/index.tsx index 58eb95a866..8465519273 100644 --- a/samples/interactions/query-builder/template/src/index.tsx +++ b/samples/interactions/query-builder/template/src/index.tsx @@ -152,7 +152,7 @@ const buildRegionSelect = (ctx: QueryBuilderSearchValueContext) => { key={key} value={currentValue} onChange={(sender: any) => { - const value = sender.value; + const value = sender.detail; const currentKey = ctx?.implicit?.value?.value ?? ''; if (!value || value === currentKey) return; @@ -213,7 +213,7 @@ const buildDatePicker = (ctx: QueryBuilderSearchValueContext) => { value={currentValue} disabled={!isEnabled} onChange={(sender: any) => { - setImplicitValue(ctx, sender.value); + setImplicitValue(ctx, sender.detail); }}> ); @@ -232,7 +232,7 @@ const buildTimeInput = (ctx: QueryBuilderSearchValueContext) => { value={currentValue} disabled={isDisabled} onChange={(sender: any) => { - setImplicitValue(ctx, sender.value); + setImplicitValue(ctx, sender.detail); }}>
From 9dc0c1e9b82814e92e18dc2c291a23f256b0f99e Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 9 Jul 2026 15:34:22 +0300 Subject: [PATCH 16/23] fix(query-builder): fix value on the select --- samples/interactions/query-builder/template/src/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/interactions/query-builder/template/src/index.tsx b/samples/interactions/query-builder/template/src/index.tsx index 8465519273..d8bfb257f4 100644 --- a/samples/interactions/query-builder/template/src/index.tsx +++ b/samples/interactions/query-builder/template/src/index.tsx @@ -152,7 +152,7 @@ const buildRegionSelect = (ctx: QueryBuilderSearchValueContext) => { key={key} value={currentValue} onChange={(sender: any) => { - const value = sender.detail; + const value = sender.detail.value; const currentKey = ctx?.implicit?.value?.value ?? ''; if (!value || value === currentKey) return; From 3bebf31efab8a8359ed5326da80b5249ae97f765 Mon Sep 17 00:00:00 2001 From: Hristo Hristov <57346540+Hristo313@users.noreply.github.com> Date: Thu, 6 Aug 2026 18:40:28 +0300 Subject: [PATCH 17/23] feat(docs): update badge sample (#1091) --- browser/package-lock.json | 632 +++++++++++++++++- browser/package.json | 2 + browser/public/meta.json | 2 +- browser/src/index.css | 7 + browser/src/index.tsx | 5 + browser/src/navigation/SamplesBrowser.json | 2 +- browser/src/sample-size-reporter.ts | 86 +++ browser/tasks/Transformer.ts | 9 + browser/vite.config.js | 2 + samples/inputs/badge/dot/src/index.css | 144 +++- samples/inputs/badge/dot/src/index.tsx | 85 ++- .../icon/.devcontainer/devcontainer.json | 4 + samples/inputs/badge/icon/.eslintrc.js | 75 +++ samples/inputs/badge/icon/README.md | 56 ++ samples/inputs/badge/icon/index.html | 11 + samples/inputs/badge/icon/package.json | 42 ++ samples/inputs/badge/icon/sandbox.config.json | 5 + samples/inputs/badge/icon/src/index.css | 85 +++ samples/inputs/badge/icon/src/index.tsx | 65 ++ samples/inputs/badge/icon/tsconfig.json | 44 ++ samples/inputs/badge/icon/vite.config.js | 12 + samples/inputs/badge/outlined/src/index.css | 144 +++- samples/inputs/badge/outlined/src/index.tsx | 71 +- samples/inputs/badge/overview/src/index.css | 85 ++- samples/inputs/badge/overview/src/index.tsx | 57 +- samples/inputs/badge/shape/src/index.css | 46 +- samples/inputs/badge/shape/src/index.tsx | 43 +- .../size/.devcontainer/devcontainer.json | 4 + samples/inputs/badge/size/.eslintrc.js | 25 + samples/inputs/badge/size/README.md | 56 ++ samples/inputs/badge/size/index.html | 11 + samples/inputs/badge/size/package.json | 42 ++ samples/inputs/badge/size/sandbox.config.json | 5 + samples/inputs/badge/size/src/index.css | 47 ++ samples/inputs/badge/size/src/index.tsx | 46 ++ samples/inputs/badge/size/tsconfig.json | 29 + samples/inputs/badge/size/vite.config.js | 8 + samples/inputs/badge/styling/src/index.css | 84 ++- samples/inputs/badge/styling/src/index.tsx | 62 +- .../.devcontainer/devcontainer.json | 4 + .../badge/tailwind-styling/.eslintrc.js | 75 +++ .../inputs/badge/tailwind-styling/README.md | 56 ++ .../inputs/badge/tailwind-styling/index.html | 11 + .../badge/tailwind-styling/package.json | 44 ++ .../tailwind-styling/sandbox.config.json | 5 + .../badge/tailwind-styling/src/index.css | 74 ++ .../badge/tailwind-styling/src/index.tsx | 63 ++ .../badge/tailwind-styling/tsconfig.json | 44 ++ .../badge/tailwind-styling/vite.config.js | 13 + .../type/.devcontainer/devcontainer.json | 4 + samples/inputs/badge/type/.eslintrc.js | 11 + samples/inputs/badge/type/README.md | 56 ++ samples/inputs/badge/type/index.html | 11 + samples/inputs/badge/type/package.json | 37 + samples/inputs/badge/type/sandbox.config.json | 5 + samples/inputs/badge/type/src/index.css | 57 ++ samples/inputs/badge/type/src/index.tsx | 59 ++ samples/inputs/badge/type/tsconfig.json | 13 + samples/inputs/badge/type/vite.config.js | 8 + samples/inputs/badge/variants/src/index.css | 76 ++- samples/inputs/badge/variants/src/index.tsx | 85 ++- 61 files changed, 2932 insertions(+), 119 deletions(-) create mode 100644 browser/src/sample-size-reporter.ts create mode 100644 samples/inputs/badge/icon/.devcontainer/devcontainer.json create mode 100644 samples/inputs/badge/icon/.eslintrc.js create mode 100644 samples/inputs/badge/icon/README.md create mode 100644 samples/inputs/badge/icon/index.html create mode 100644 samples/inputs/badge/icon/package.json create mode 100644 samples/inputs/badge/icon/sandbox.config.json create mode 100644 samples/inputs/badge/icon/src/index.css create mode 100644 samples/inputs/badge/icon/src/index.tsx create mode 100644 samples/inputs/badge/icon/tsconfig.json create mode 100644 samples/inputs/badge/icon/vite.config.js create mode 100644 samples/inputs/badge/size/.devcontainer/devcontainer.json create mode 100644 samples/inputs/badge/size/.eslintrc.js create mode 100644 samples/inputs/badge/size/README.md create mode 100644 samples/inputs/badge/size/index.html create mode 100644 samples/inputs/badge/size/package.json create mode 100644 samples/inputs/badge/size/sandbox.config.json create mode 100644 samples/inputs/badge/size/src/index.css create mode 100644 samples/inputs/badge/size/src/index.tsx create mode 100644 samples/inputs/badge/size/tsconfig.json create mode 100644 samples/inputs/badge/size/vite.config.js create mode 100644 samples/inputs/badge/tailwind-styling/.devcontainer/devcontainer.json create mode 100644 samples/inputs/badge/tailwind-styling/.eslintrc.js create mode 100644 samples/inputs/badge/tailwind-styling/README.md create mode 100644 samples/inputs/badge/tailwind-styling/index.html create mode 100644 samples/inputs/badge/tailwind-styling/package.json create mode 100644 samples/inputs/badge/tailwind-styling/sandbox.config.json create mode 100644 samples/inputs/badge/tailwind-styling/src/index.css create mode 100644 samples/inputs/badge/tailwind-styling/src/index.tsx create mode 100644 samples/inputs/badge/tailwind-styling/tsconfig.json create mode 100644 samples/inputs/badge/tailwind-styling/vite.config.js create mode 100644 samples/inputs/badge/type/.devcontainer/devcontainer.json create mode 100644 samples/inputs/badge/type/.eslintrc.js create mode 100644 samples/inputs/badge/type/README.md create mode 100644 samples/inputs/badge/type/index.html create mode 100644 samples/inputs/badge/type/package.json create mode 100644 samples/inputs/badge/type/sandbox.config.json create mode 100644 samples/inputs/badge/type/src/index.css create mode 100644 samples/inputs/badge/type/src/index.tsx create mode 100644 samples/inputs/badge/type/tsconfig.json create mode 100644 samples/inputs/badge/type/vite.config.js diff --git a/browser/package-lock.json b/browser/package-lock.json index e9ef98c0c9..3aae5f1550 100644 --- a/browser/package-lock.json +++ b/browser/package-lock.json @@ -53,6 +53,7 @@ "@babel/plugin-proposal-private-property-in-object": "~7.21.11", "@babel/plugin-transform-class-static-block": "^7.26.0", "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@tailwindcss/vite": "^4.3.3", "@types/gulp": "^4.0.6", "@types/jest": "^29.2.0", "@types/node": "^24.7.1", @@ -91,6 +92,7 @@ "remark-frontmatter": "^2.0.0", "run-sequence": "^2.2.1", "sass": "^1.97.3", + "tailwindcss": "^4.3.3", "ts-loader": "^9.5.4", "ts-node": "^10.9.2", "typescript": "^4.8.4", @@ -2186,6 +2188,344 @@ "dev": true, "license": "MIT" }, + "node_modules/@tailwindcss/node": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.3.tgz", + "integrity": "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.24.1", + "jiti": "^2.7.0", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.3" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.3.tgz", + "integrity": "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-x64": "4.3.3", + "@tailwindcss/oxide-freebsd-x64": "4.3.3", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-x64-musl": "4.3.3", + "@tailwindcss/oxide-wasm32-wasi": "4.3.3", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.3.tgz", + "integrity": "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz", + "integrity": "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.3.tgz", + "integrity": "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.3.tgz", + "integrity": "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.3.tgz", + "integrity": "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.3.tgz", + "integrity": "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.3.tgz", + "integrity": "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.3.tgz", + "integrity": "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.3.tgz", + "integrity": "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.3.tgz", + "integrity": "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.11.1", + "@emnapi/runtime": "^1.11.1", + "@emnapi/wasi-threads": "^1.2.2", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.2", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.11.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.11.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/tslib": { + "version": "2.8.1", + "dev": true, + "inBundle": true, + "license": "0BSD", + "optional": true + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.3.tgz", + "integrity": "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.3.tgz", + "integrity": "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.3.tgz", + "integrity": "sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.3.3", + "@tailwindcss/oxide": "4.3.3", + "tailwindcss": "4.3.3" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, "node_modules/@testing-library/dom": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", @@ -5910,23 +6250,23 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz", - "integrity": "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==", + "version": "5.24.5", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz", + "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" + "tapable": "^2.3.3" }, "engines": { "node": ">=10.13.0" } }, "node_modules/enhanced-resolve/node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", "dev": true, "license": "MIT", "engines": { @@ -10691,6 +11031,16 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/jose": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", @@ -10987,6 +11337,267 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", @@ -16916,6 +17527,13 @@ "node": ">=16.0.0" } }, + "node_modules/tailwindcss": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz", + "integrity": "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==", + "dev": true, + "license": "MIT" + }, "node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", diff --git a/browser/package.json b/browser/package.json index 7138143a65..3e837e82e4 100644 --- a/browser/package.json +++ b/browser/package.json @@ -61,6 +61,7 @@ "@babel/plugin-proposal-private-property-in-object": "~7.21.11", "@babel/plugin-transform-class-static-block": "^7.26.0", "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@tailwindcss/vite": "^4.3.3", "@types/gulp": "^4.0.6", "@types/jest": "^29.2.0", "@types/node": "^24.7.1", @@ -99,6 +100,7 @@ "remark-frontmatter": "^2.0.0", "run-sequence": "^2.2.1", "sass": "^1.97.3", + "tailwindcss": "^4.3.3", "ts-loader": "^9.5.4", "ts-node": "^10.9.2", "typescript": "^4.8.4", diff --git a/browser/public/meta.json b/browser/public/meta.json index 4d9f02110e..717bce6e87 100644 --- a/browser/public/meta.json +++ b/browser/public/meta.json @@ -1 +1 @@ -{"version":"23.2.915","date":"2026-06-16 16:54:44","note":"this file is auto-generated"} \ No newline at end of file +{"version":"23.2.915","date":"2026-08-05 23:55:42","note":"this file is auto-generated"} \ No newline at end of file diff --git a/browser/src/index.css b/browser/src/index.css index 65ceb68061..68ba452275 100644 --- a/browser/src/index.css +++ b/browser/src/index.css @@ -1,3 +1,10 @@ +#root, +html, +body, +main { + background: transparent; +} + .igx-grid__td img[src*="dl.infragistics.com/x/img/people"] { width: 62px; height: 62px; diff --git a/browser/src/index.tsx b/browser/src/index.tsx index 8448fe8ebb..36e80a84fe 100644 --- a/browser/src/index.tsx +++ b/browser/src/index.tsx @@ -5,6 +5,7 @@ import { BrowserRouter } from "react-router-dom"; import SamplesBrowser from "./navigation/SamplesBrowser"; import RegisterServiceWorker from './serviceWorker'; import { createRoot } from 'react-dom/client'; +import { initSampleSizeReporter } from './sample-size-reporter'; import './index.css'; // styles shared between all samples @@ -21,6 +22,10 @@ import './index.css'; // styles shared between all samples // ); // }); +// Lets docs samples embedded with size their iframe to +// their content. Dormant unless the docs host asks for it. +initSampleSizeReporter(); + const container = document.getElementById('root'); const root = createRoot(container); root.render( diff --git a/browser/src/navigation/SamplesBrowser.json b/browser/src/navigation/SamplesBrowser.json index 4d9f02110e..717bce6e87 100644 --- a/browser/src/navigation/SamplesBrowser.json +++ b/browser/src/navigation/SamplesBrowser.json @@ -1 +1 @@ -{"version":"23.2.915","date":"2026-06-16 16:54:44","note":"this file is auto-generated"} \ No newline at end of file +{"version":"23.2.915","date":"2026-08-05 23:55:42","note":"this file is auto-generated"} \ No newline at end of file diff --git a/browser/src/sample-size-reporter.ts b/browser/src/sample-size-reporter.ts new file mode 100644 index 0000000000..493678e20c --- /dev/null +++ b/browser/src/sample-size-reporter.ts @@ -0,0 +1,86 @@ +/** + * Demo-side half of the docs contract + * (astro-components/src/scripts/sample-widget.ts). + * + * The docs host posts { type: 'igd-sample-fit', width?: boolean } into the + * iframe when it loads. In response we neutralize the viewport-bound sizing + * this app inherits (shared.v8.css pins #root/html/body/main to height: 100%, + * and the samples browser chrome plus the shared .container/.sample wrappers + * chain another height: 100% on top β€” all of which can only echo the iframe's + * own height back) and report the content's size with + * { type: 'igd-sample-height', height, width? } immediately and on every + * resize. Demos embedded at a fixed height never receive the enable message, + * so this stays dormant for them and their percentage layouts are untouched. + */ +const FIT_ENABLE = 'igd-sample-fit'; +const FIT_REPORT = 'igd-sample-height'; + +export function initSampleSizeReporter(): void { + if (typeof window === 'undefined' || window.parent === window) { + return; + } + + let reportWidth = false; + let observer: ResizeObserver | null = null; + let styled = false; + // Captured from the host's enable message so replies go back to that exact + // origin instead of being broadcast to any window that happens to listen. + let hostOrigin = '*'; + + // Right-most element edge, mirroring the host's same-origin measurement: + // block-level content stretches to the viewport width, so the intrinsic + // width has to come from the element boxes, not the body itself. + const measureWidth = (): number | undefined => { + const body = document.body; + const left = body.getBoundingClientRect().left; + let right = left; + body.querySelectorAll('*').forEach(el => { + right = Math.max(right, el.getBoundingClientRect().right); + }); + if (right <= left) { + return undefined; + } + const cs = getComputedStyle(body); + return right - left + parseFloat(cs.paddingRight || '0') + parseFloat(cs.borderRightWidth || '0'); + }; + + const report = () => { + const height = Math.max( + document.documentElement.offsetHeight, + document.body.offsetHeight, + document.body.scrollHeight, + ); + window.parent.postMessage( + { type: FIT_REPORT, height, width: reportWidth ? measureWidth() : undefined }, + hostOrigin, + ); + }; + + window.addEventListener('message', (e: MessageEvent) => { + if (!e.data || e.data.type !== FIT_ENABLE) { + return; + } + reportWidth = Boolean(e.data.width); + hostOrigin = e.origin || '*'; + + if (!styled) { + styled = true; + const style = document.createElement('style'); + // Every link in the height: 100% chain has to be released, otherwise + // the first one left pinned re-anchors everything below it to the + // iframe height. !important also beats SamplesBrowser's inline + // height: 100% on .sbSwitch. + style.textContent = + 'html, body, #root, main { height: auto !important; overflow: visible !important; }' + + '.sbRoot, .sbContent, .sbSwitch { height: auto !important; overflow: visible !important; }' + + '.container, .sample { height: auto !important; overflow: visible !important; }'; + document.head.appendChild(style); + } + + report(); + if ('ResizeObserver' in window && !observer) { + observer = new ResizeObserver(report); + observer.observe(document.body); + } + }); +} diff --git a/browser/tasks/Transformer.ts b/browser/tasks/Transformer.ts index e037fe3109..a94b443bfd 100644 --- a/browser/tasks/Transformer.ts +++ b/browser/tasks/Transformer.ts @@ -454,6 +454,15 @@ class Transformer { return ".." + sampleFullPath; } + // the repository was cloned into a folder that is not named after it, + // so fall back to the repository root, which is the parent of ./browser + let repositoryRoot = pathModule.dirname(process.cwd()); + if (sampleFullPath.indexOf(repositoryRoot) === 0) { + let relativePath = sampleFullPath.substring(repositoryRoot.length); + relativePath = relativePath.split(pathModule.sep).join(process.env.PATH_SEP || '/'); + return ".." + relativePath; + } + console.log("failed on getRelative " + sampleFullPath); return sampleFullPath; } diff --git a/browser/vite.config.js b/browser/vite.config.js index 6545f1e9dc..7767f85ff9 100644 --- a/browser/vite.config.js +++ b/browser/vite.config.js @@ -1,5 +1,6 @@ import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; +import tailwindcss from '@tailwindcss/vite'; import tsconfigPaths from 'vite-tsconfig-paths'; import path, { resolve } from 'path'; @@ -8,6 +9,7 @@ const jszipShimPath = path.resolve(__dirname, 'src/jszip-shim.js'); export default defineConfig(({ mode }) => ({ plugins: [ react(), + tailwindcss(), tsconfigPaths() ], base: mode === 'production' ? '/react-demos/' : '/', diff --git a/samples/inputs/badge/dot/src/index.css b/samples/inputs/badge/dot/src/index.css index 1f53b8aa05..086ae8114d 100644 --- a/samples/inputs/badge/dot/src/index.css +++ b/samples/inputs/badge/dot/src/index.css @@ -1,2 +1,144 @@ /* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-badge { + --ig-size: var(--ig-size-small); + --ig-badge-dot-size: 0.5rem; +} + +igc-avatar { + --size: 40px; +} + +.icon-example igc-badge, +.avatar-example igc-badge, +.nav-icon igc-badge { + position: absolute; +} + +.icon-example igc-badge { + inset-block-start: 0; + inset-inline-end: 2px; +} + +.avatar-example igc-badge { + inset-block-start: -0.25rem; + inset-inline-end: -2px; +} + +.nav-icon igc-badge { + inset-block-start: -2px; + inset-inline-end: -6px; +} + +.badge-dot { + display: flex; + align-items: center; + justify-content: center; + gap: 40px; + min-height: 7rem; +} + +.dot-example { + position: relative; +} + +.icon-example, +.avatar-example, +.icon-circle { + display: flex; + align-items: center; + width: 36px; + height: 36px; +} + +.icon-circle { + justify-content: center; + border-radius: 50%; + background: var(--ig-gray-200); + color: var(--ig-gray-800); +} + +.notifications-card, +.nav-card { + background: var(--ig-surface-500); + border-radius: 4px; + box-shadow: 0 1px 3px hsl(from var(--ig-gray-900) h s l / 0.12); +} + +.notifications-card { + min-width: 272px; + padding: 8px 0; +} + +.notification-row { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 12px; + font-size: 14px; + color: var(--ig-gray-900); +} + +.row-indicator { + display: inline-flex; + justify-content: center; + width: 12px; +} + +.row-indicator igc-badge, +.nav-icon igc-badge { + --ig-badge-background-color: #0057A9; +} + +.row-indicator igc-badge::part(base), +.nav-icon igc-badge::part(base) { + background-color: #0057A9; +} + +.row-title { + flex: 1; +} + +.row-time { + font-size: 13px; + color: var(--ig-gray-900); +} + +.row-time.unread { + color: #0057A9; + font-weight: 600; +} + +.row-chevron { + --ig-size: 1; + + color: var(--ig-gray-600); + font-size: 18px; +} + +.nav-card { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 12px; +} + +.nav-item { + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; + min-width: 56px; + color: var(--ig-gray-700); + font-size: 12px; +} + +.nav-item.active { + color: #0075D2; +} + +.nav-icon { + position: relative; + display: inline-flex; +} diff --git a/samples/inputs/badge/dot/src/index.tsx b/samples/inputs/badge/dot/src/index.tsx index 45a07a4218..551a61e7b7 100644 --- a/samples/inputs/badge/dot/src/index.tsx +++ b/samples/inputs/badge/dot/src/index.tsx @@ -1,20 +1,81 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import ReactDOM from 'react-dom/client'; -import { IgrBadge } from 'igniteui-react'; +import { IgrAvatar, IgrBadge, IgrIcon, registerIconFromText } from 'igniteui-react'; +import './index.css'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; -export default class BadgeDot extends React.Component { - constructor(props: any) { - super(props); - } +const notificationsIcon = + ''; +const chevronRightIcon = + ''; +const homeIcon = + ''; +const personIcon = + ''; +const facebookMessengerIcon = + ''; - public render(): JSX.Element { - return ( -
- +const notifications = [ + { title: 'Contract renewal', time: '09:12', unread: true }, + { title: 'Weekly digest', time: 'Yesterday', unread: false } +]; + +const tabs = [ + { label: 'Home', icon: 'home', active: true, hasUpdates: false }, + { label: 'Chat', icon: 'facebookMessenger', active: false, hasUpdates: true }, + { label: 'Profile', icon: 'person', active: false, hasUpdates: false } +]; + +export default function BadgeDot(): JSX.Element { + useEffect(() => { + registerIconFromText('notifications', notificationsIcon, 'material'); + registerIconFromText('chevron_right', chevronRightIcon, 'material'); + registerIconFromText('home', homeIcon, 'material'); + registerIconFromText('person', personIcon, 'material'); + registerIconFromText('facebookMessenger', facebookMessengerIcon, 'material'); + }, []); + + return ( +
+
+
+ +
+ +
+
+ {notifications.map((item) => ( +
+ + {item.unread && } + + {item.title} + {item.time} + +
+ ))} +
+
+ + +
+
+ {tabs.map((tab) => ( +
+ + + {tab.hasUpdates && } + + {tab.label} +
+ ))}
- ); - } +
+ ); } // rendering above class to the React DOM diff --git a/samples/inputs/badge/icon/.devcontainer/devcontainer.json b/samples/inputs/badge/icon/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..e0b8e9c925 --- /dev/null +++ b/samples/inputs/badge/icon/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} \ No newline at end of file diff --git a/samples/inputs/badge/icon/.eslintrc.js b/samples/inputs/badge/icon/.eslintrc.js new file mode 100644 index 0000000000..b45160a9ee --- /dev/null +++ b/samples/inputs/badge/icon/.eslintrc.js @@ -0,0 +1,75 @@ +// https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project +module.exports = { + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: { + jsx: true // Allows for the parsing of JSX + } + }, + settings: { + react: { + version: "999.999.999" // Tells eslint-plugin-react to automatically detect the version of React to use + } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react + "plugin:@typescript-eslint/recommended" // Uses the recommended rules from @typescript-eslint/eslint-plugin + ], + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + }, + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "rules": { + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + } + } + ] + }; \ No newline at end of file diff --git a/samples/inputs/badge/icon/README.md b/samples/inputs/badge/icon/README.md new file mode 100644 index 0000000000..90696beccc --- /dev/null +++ b/samples/inputs/badge/icon/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Icon feature using [Badge](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/badge/icon +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/badge/icon/index.html b/samples/inputs/badge/icon/index.html new file mode 100644 index 0000000000..1d6ac94067 --- /dev/null +++ b/samples/inputs/badge/icon/index.html @@ -0,0 +1,11 @@ + + + + BadgeIcon + + + +
+ + + diff --git a/samples/inputs/badge/icon/package.json b/samples/inputs/badge/icon/package.json new file mode 100644 index 0000000000..11098b7706 --- /dev/null +++ b/samples/inputs/badge/icon/package.json @@ -0,0 +1,42 @@ +{ + "name": "react-badge-icon", + "description": "This project provides example of Badge Icon using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/inputs/badge/icon/sandbox.config.json b/samples/inputs/badge/icon/sandbox.config.json new file mode 100644 index 0000000000..00acba0c10 --- /dev/null +++ b/samples/inputs/badge/icon/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} \ No newline at end of file diff --git a/samples/inputs/badge/icon/src/index.css b/samples/inputs/badge/icon/src/index.css new file mode 100644 index 0000000000..7996181645 --- /dev/null +++ b/samples/inputs/badge/icon/src/index.css @@ -0,0 +1,85 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-avatar { + --size: 40px; + --ig-avatar-background: var(--ig-gray-700); + --ig-avatar-color: var(--ig-gray-50); +} + +igc-badge[variant="info"] { + --ig-badge-background-color: #0057A9; +} + +igc-badge[variant="info"]::part(base) { + background-color: #0057A9; +} + +igc-badge igc-icon { + color: var(--ig-gray-50); +} + +.badge-star igc-icon { + color: var(--ig-gray-900); +} + +.icon-wrapper > igc-badge { + --ig-size: var(--ig-size-medium); + display: inline-flex; + align-items: center; + justify-content: center; + text-align: center; +} + +.avatar-wrapper igc-badge { + --ig-size: var(--ig-size-small); + position: absolute; + inset-block-start: -4px; + inset-inline-end: -6px; +} + +.icon-wrapper { + display: flex; + align-items: flex-end; + justify-content: center; + width: 40px; + height: 40px; +} + +.badge-settings { + --ig-badge-background-color: #0070BA; +} + +.badge-settings::part(base) { + background-color: #0070BA; +} + +.badge-icon { + display: flex; + align-items: center; + justify-content: center; + gap: 40px; + min-height: 7rem; +} + +.badge-icon-item { + display: flex; + flex-direction: column; + align-items: center; + gap: 6px; + min-width: 56px; +} + +.badge-icon-item span { + color: var(--ig-gray-700); + font-size: 12px; + transform: translateY(4px); +} + +.avatar-wrapper { + position: relative; + display: flex; + align-items: center; + justify-content: center; + height: 40px; +} diff --git a/samples/inputs/badge/icon/src/index.tsx b/samples/inputs/badge/icon/src/index.tsx new file mode 100644 index 0000000000..bd4f68d39b --- /dev/null +++ b/samples/inputs/badge/icon/src/index.tsx @@ -0,0 +1,65 @@ +import React, { useEffect } from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import { IgrAvatar, IgrBadge, IgrIcon, registerIconFromText } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/bootstrap.css'; + +const checkIcon = + ''; +const favoriteBorderIcon = + ''; +const notificationsIcon = + ''; +const starBorderIcon = + ''; +const settingsIcon = + ''; +const closeIcon = + ''; + +const badges = [ + { icon: 'check', variant: 'success', label: 'check' }, + { icon: 'favorite_border', variant: 'danger', label: 'favorite' }, + { icon: 'notifications', variant: 'info', label: 'notification' }, + { icon: 'star_border', variant: 'warning', label: 'star' }, + { icon: 'settings', variant: 'info', label: 'settings' } +]; + +export default function BadgeIcon(): JSX.Element { + useEffect(() => { + registerIconFromText('check', checkIcon, 'material'); + registerIconFromText('favorite_border', favoriteBorderIcon, 'material'); + registerIconFromText('notifications', notificationsIcon, 'material'); + registerIconFromText('star_border', starBorderIcon, 'material'); + registerIconFromText('settings', settingsIcon, 'material'); + registerIconFromText('close', closeIcon, 'material'); + }, []); + + return ( +
+ {badges.map((item) => ( +
+
+ + + +
+ {item.label} +
+ ))} +
+
+ + + + +
+ on avatar +
+
+ ); +} + +// rendering above class to the React DOM +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/badge/icon/tsconfig.json b/samples/inputs/badge/icon/tsconfig.json new file mode 100644 index 0000000000..e7db8a94f5 --- /dev/null +++ b/samples/inputs/badge/icon/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "**/odatajs-4.0.0.js", + "config-overrides.js" + ], + "include": [ + "src" + ] +} diff --git a/samples/inputs/badge/icon/vite.config.js b/samples/inputs/badge/icon/vite.config.js new file mode 100644 index 0000000000..1744dbc719 --- /dev/null +++ b/samples/inputs/badge/icon/vite.config.js @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + build: { + outDir: 'build' + }, + server: { + open: false + }, +}); \ No newline at end of file diff --git a/samples/inputs/badge/outlined/src/index.css b/samples/inputs/badge/outlined/src/index.css index 151d518c9a..20a8a4688a 100644 --- a/samples/inputs/badge/outlined/src/index.css +++ b/samples/inputs/badge/outlined/src/index.css @@ -1,35 +1,139 @@ /* shared styles are loaded from: */ /* https://dl.infragistics.com/x/css/samples/shared.v8.css */ -.wrapper { +igc-badge { + --ig-size: var(--ig-size-small); +} + +igc-avatar { + --size: 40px; + --ig-avatar-background: var(--ig-gray-700); + --ig-avatar-color: var(--ig-gray-50); +} + +.outlined-example igc-avatar igc-icon { + color: var(--ig-gray-50); +} + +.outlined-example:nth-child(2) igc-badge { + inset-block-start: auto; + inset-block-end: -6px; + inset-inline-end: -6px; +} + +.step-marker igc-badge { + position: absolute; + inset-block-start: -1px; + inset-inline-end: -2px; +} + +.outlined-example igc-badge { + position: absolute; + inset-block-start: -6px; + inset-inline-end: -10px; +} + +.icon-circle igc-icon { + font-size: 20px; +} + +.badge-outlined { + display: flex; + align-items: center; + justify-content: center; + gap: 60px; + min-height: 7rem; +} + +.outlined-example { position: relative; display: flex; - width: fit-content; +} + +.icon-circle, +.step-circle { + display: flex; align-items: center; - margin-block: 1rem; - gap: 0.5rem; - padding: 0.5rem; - border: 1px solid var(--ig-gray-300); - border-radius: .25rem; + justify-content: center; + border-radius: 50%; } -igc-avatar { - @container style(--ig-theme: indigo) { - --ig-size: var(--ig-size-large); - } +.icon-circle { + width: 36px; + height: 36px; + background: var(--ig-gray-200); + color: var(--ig-gray-800); +} - anchor-name: --avatar; +.badge-info-blue { + --ig-badge-background-color: #0057A9; } -igc-badge { - --size: .75rem; +.badge-info-blue::part(base) { + background-color: #0057A9; +} - position: absolute; - inset-block-end: anchor(--avatar bottom); - inset-inline-end: anchor(--avatar right); +.payment-dot-blue { + --ig-badge-background-color: #0057A9; + --ig-badge-dot-size: 0.5rem; +} + +.payment-dot-blue::part(base) { + background-color: #0057A9; +} + +igc-badge::part(base), +igc-badge igc-icon { + color: var(--ig-gray-50); +} + +igc-badge igc-icon { + fill: var(--ig-gray-50); +} + +.steps { + display: flex; + align-items: flex-start; + gap: 8px; +} + +.step { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; +} + +.step-marker { + position: relative; + display: flex; +} + +.step-circle { + width: 26px; + height: 26px; + background: var(--ig-gray-900); + color: var(--ig-gray-50); + font-size: 12px; +} + +.step-circle.pending { + background: var(--ig-gray-200); + color: var(--ig-gray-800); +} + +.step-connector { + width: 56px; + margin-block-start: 13px; + border-block-start: 1px solid var(--ig-gray-900); +} + +.step-connector.pending { + border-block-start-style: dashed; + border-block-start-color: var(--ig-gray-400); } -span { - display: block; - font-weight: 600; +.step-label { + color: var(--ig-gray-700); + font-size: 13px; } diff --git a/samples/inputs/badge/outlined/src/index.tsx b/samples/inputs/badge/outlined/src/index.tsx index 4e78560b1d..a110275e9b 100644 --- a/samples/inputs/badge/outlined/src/index.tsx +++ b/samples/inputs/badge/outlined/src/index.tsx @@ -1,25 +1,62 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; -import { IgrBadge, IgrAvatar } from 'igniteui-react'; +import { IgrBadge, IgrAvatar, IgrIcon, registerIconFromText } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; -export default class BadgeOutlined extends React.Component { - constructor(props: any) { - super(props); - } +const favoriteBorderIcon = + ''; +const closeIcon = + ''; - public render(): JSX.Element { - return ( -
-
- - -
- Terrance Orta -
- ); - } +const steps = [ + { index: 1, label: 'Orders', current: false, pending: false }, + { index: 2, label: 'Payment', current: true, pending: false }, + { index: 3, label: 'Shipping', current: false, pending: true } +]; + +export default function BadgeOutlined(): JSX.Element { + useEffect(() => { + registerIconFromText('favorite_border', favoriteBorderIcon, 'material'); + registerIconFromText('close', closeIcon, 'material'); + }, []); + + return ( +
+
+
+ +
+ 23 +
+
+ + + + +
+
+ {steps.map((step, i) => ( + + {i > 0 && ( + + )} +
+
+ + {step.index} + + {step.current && ( + + )} +
+ {step.label} +
+
+ ))} +
+
+ ); } // rendering above class to the React DOM diff --git a/samples/inputs/badge/overview/src/index.css b/samples/inputs/badge/overview/src/index.css index 2ea157a65b..6a1e390d1f 100644 --- a/samples/inputs/badge/overview/src/index.css +++ b/samples/inputs/badge/overview/src/index.css @@ -1,13 +1,90 @@ /* shared styles are loaded from: */ /* https://dl.infragistics.com/x/css/samples/shared.v8.css */ +igc-avatar { + --size: 40px; +} + +igc-icon { + color: var(--ig-gray-700); + font-size: 1.5rem; +} + igc-badge { - --size: 18px; + --ig-size: var(--ig-size-small); + position: absolute; + inset-block-start: -0.15rem; + inset-inline-end: -0.15rem; +} + +.avatar-example igc-badge { + inset-block-start: auto; + inset-block-end: -0.15rem; + inset-inline-end: -0.15rem; +} +.avatar-example igc-icon { + color: var(--ig-gray-50); + fill: var(--ig-gray-50); +} + +.event-example igc-chip { + --ig-size: var(--ig-size-large); +} + +.event-example igc-chip::part(base) { + background-color: #E0E0E0; + border-radius: 999px; +} + +.event-example igc-badge { + inset-block-start: 0; + inset-inline-end: -0.8rem; +} + +.event-example igc-badge::part(base) { + background-color: #0057A9; + color: var(--ig-gray-50); +} + +.icon-example igc-badge { + inset-block-start: 0; + inset-inline-end: 0; +} + +.icon-example igc-badge::part(base) { + color: var(--ig-gray-50); +} + +.notification-example igc-badge { + inset-block-start: 0.5rem; + inset-inline-end: 0.5rem; + width: 0.5rem; +} + +.event-example { + min-width: auto; +} + +.badge-overview { + display: flex; + align-items: center; + justify-content: center; + gap: 60px; + min-height: 7rem; +} + +.badge-example { position: relative; - right: 10px; + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 2.5rem; + min-height: 2.5rem; } -igc-avatar { - margin-top: 6px; +.icon-example, +.notification-example { + width: 2.5rem; + height: 2.5rem; } diff --git a/samples/inputs/badge/overview/src/index.tsx b/samples/inputs/badge/overview/src/index.tsx index f44bcee40b..46b6333d63 100644 --- a/samples/inputs/badge/overview/src/index.tsx +++ b/samples/inputs/badge/overview/src/index.tsx @@ -1,22 +1,53 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; -import { IgrBadge, IgrAvatar } from 'igniteui-react'; +import { IgrAvatar, IgrBadge, IgrChip, IgrIcon, registerIconFromText } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; -export default class BadgeOverview extends React.Component { - constructor(props: any) { - super(props); - } +const checkIcon = + ''; +const mailIcon = + ''; +const notificationsIcon = + ''; - public render(): JSX.Element { - return ( -
- - +export default function BadgeOverview(): JSX.Element { + useEffect(() => { + registerIconFromText('check', checkIcon, 'material'); + registerIconFromText('mail', mailIcon, 'material'); + registerIconFromText('notifications', notificationsIcon, 'material'); + }, []); + + return ( +
+
+ + + + +
+
+ + + 2 + +
+
+ Events + + new + +
+
+ +
- ); - } +
+ ); } // rendering above class to the React DOM diff --git a/samples/inputs/badge/shape/src/index.css b/samples/inputs/badge/shape/src/index.css index 1f53b8aa05..cf9906aea1 100644 --- a/samples/inputs/badge/shape/src/index.css +++ b/samples/inputs/badge/shape/src/index.css @@ -1,2 +1,46 @@ /* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +.badge-shape { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 40px; + min-height: 7rem; +} + +.badge-shape-row { + display: grid; + grid-template-columns: 80px 40px 40px 40px; + align-items: center; + justify-items: center; + gap: 8px; +} + +.row-label { + justify-self: end; + color: var(--ig-gray-700); + font-size: 14px; +} + +.badge-small { + --ig-size: var(--ig-size-small); +} + +.badge-info-blue { + --ig-badge-background-color: #0057A9; +} + +.badge-info-blue::part(base) { + background-color: #0057A9; +} + +igc-badge::part(base), +igc-badge igc-icon { + color: var(--ig-gray-50); +} + +igc-badge igc-icon { + fill: var(--ig-gray-50); +} diff --git a/samples/inputs/badge/shape/src/index.tsx b/samples/inputs/badge/shape/src/index.tsx index abe11d2fd9..fe423f3edf 100644 --- a/samples/inputs/badge/shape/src/index.tsx +++ b/samples/inputs/badge/shape/src/index.tsx @@ -1,22 +1,41 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; -import { IgrBadge } from 'igniteui-react'; +import { IgrBadge, IgrIcon, registerIconFromText } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; -export default class BadgeShape extends React.Component { +const checkIcon = + ''; - constructor(props: any) { - super(props); - } +export default function BadgeShape(): JSX.Element { + useEffect(() => { + registerIconFromText('check', checkIcon, 'material'); + }, []); - public render(): JSX.Element { - return ( -
- + return ( +
+
+ Rounded + + + + 2 + + +
- ); - } +
+ Square + + + + 2 + + + +
+
+ ); } // rendering above class to the React DOM diff --git a/samples/inputs/badge/size/.devcontainer/devcontainer.json b/samples/inputs/badge/size/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..ff434ecd44 --- /dev/null +++ b/samples/inputs/badge/size/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} diff --git a/samples/inputs/badge/size/.eslintrc.js b/samples/inputs/badge/size/.eslintrc.js new file mode 100644 index 0000000000..d3ed87885e --- /dev/null +++ b/samples/inputs/badge/size/.eslintrc.js @@ -0,0 +1,25 @@ +// https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project +module.exports = { + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: 2020, + sourceType: "module", + ecmaFeatures: { jsx: true } + }, + settings: { + react: { version: "999.999.999" } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:@typescript-eslint/recommended" + ], + rules: { + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "react/react-in-jsx-scope": "off" + } +}; diff --git a/samples/inputs/badge/size/README.md b/samples/inputs/badge/size/README.md new file mode 100644 index 0000000000..43bc5c8900 --- /dev/null +++ b/samples/inputs/badge/size/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Size feature using [Badge](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/badge/size +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/badge/size/index.html b/samples/inputs/badge/size/index.html new file mode 100644 index 0000000000..c4eae48c06 --- /dev/null +++ b/samples/inputs/badge/size/index.html @@ -0,0 +1,11 @@ + + + + BadgeSize + + + +
+ + + diff --git a/samples/inputs/badge/size/package.json b/samples/inputs/badge/size/package.json new file mode 100644 index 0000000000..3a1ccaa183 --- /dev/null +++ b/samples/inputs/badge/size/package.json @@ -0,0 +1,42 @@ +{ + "name": "react-badge-size", + "description": "This project provides example of Badge Size using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/inputs/badge/size/sandbox.config.json b/samples/inputs/badge/size/sandbox.config.json new file mode 100644 index 0000000000..49a80d1d8b --- /dev/null +++ b/samples/inputs/badge/size/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} diff --git a/samples/inputs/badge/size/src/index.css b/samples/inputs/badge/size/src/index.css new file mode 100644 index 0000000000..4b15b3dd4b --- /dev/null +++ b/samples/inputs/badge/size/src/index.css @@ -0,0 +1,47 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +.badge-size { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 40px; + padding: 32px; + min-height: 7rem; +} + +.badge-size-row { + display: grid; + grid-template-columns: 80px 32px 40px 40px; + align-items: center; + justify-items: center; + gap: 8px; +} + +.row-label { + justify-self: end; + color: var(--ig-gray-700); + font-size: 14px; +} + +.badge-info-blue { + --ig-badge-background-color: #0057A9; +} + +.badge-info-blue::part(base) { + background-color: #0057A9; +} + +igc-badge::part(base), +igc-badge igc-icon { + color: var(--ig-gray-50); +} + +igc-badge igc-icon { + fill: var(--ig-gray-50); +} + +.badge-large { --ig-size: var(--ig-size-large); } +.badge-medium { --ig-size: var(--ig-size-medium); } +.badge-small { --ig-size: var(--ig-size-small); } diff --git a/samples/inputs/badge/size/src/index.tsx b/samples/inputs/badge/size/src/index.tsx new file mode 100644 index 0000000000..0a997231d4 --- /dev/null +++ b/samples/inputs/badge/size/src/index.tsx @@ -0,0 +1,46 @@ +import React, { useEffect } from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import { IgrBadge, IgrIcon, registerIconFromText } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/bootstrap.css'; + +const checkIcon = + ''; + +export default function BadgeSize(): JSX.Element { + useEffect(() => { + registerIconFromText('check', checkIcon, 'material'); + }, []); + + return ( +
+
+ Small + + 2 + + + +
+
+ Medium + + 2 + + + +
+
+ Large + + 2 + + + +
+
+ ); +} + +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/badge/size/tsconfig.json b/samples/inputs/badge/size/tsconfig.json new file mode 100644 index 0000000000..8423942b50 --- /dev/null +++ b/samples/inputs/badge/size/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": ["es6", "dom"], + "sourceMap": true, + "allowJs": true, + "jsx": "react", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": ["node_modules", "build"], + "include": ["src"] +} diff --git a/samples/inputs/badge/size/vite.config.js b/samples/inputs/badge/size/vite.config.js new file mode 100644 index 0000000000..342e2b8e11 --- /dev/null +++ b/samples/inputs/badge/size/vite.config.js @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + build: { outDir: 'build' }, + server: { open: false }, +}); diff --git a/samples/inputs/badge/styling/src/index.css b/samples/inputs/badge/styling/src/index.css index 516c162995..d6d6fca0d4 100644 --- a/samples/inputs/badge/styling/src/index.css +++ b/samples/inputs/badge/styling/src/index.css @@ -1,7 +1,83 @@ /* shared styles are loaded from: */ /* https://dl.infragistics.com/x/css/samples/shared.v8.css */ -igc-badge::part(base) { - --background-color: var(--ig-error-A100); - --border-radius: 2px; -} \ No newline at end of file +igc-badge { + --ig-size: var(--ig-size-small); +} + +.badge-teal { + --ig-badge-background-color: var(--ig-success-700); + --ig-badge-border-radius: 50%; +} + +.badge-amber { + --ig-badge-background-color: #C97C00; + --ig-badge-border-radius: 50%; +} + +.badge-magenta { + --ig-badge-background-color: #9C27B0; + --ig-badge-text-color: var(--ig-gray-50); + --ig-badge-border-radius: 50%; +} + +.badge-lime { + --ig-badge-background-color: var(--ig-success-700); + --ig-badge-border-radius: 50%; + --ig-badge-dot-size: 0.5rem; +} + +.badge-teal igc-icon, +.badge-amber igc-icon, +.styling-item.pink igc-avatar igc-icon { + color: var(--ig-gray-50); +} + +.badge-teal igc-icon { + position: relative; +} + +.badge-teal igc-icon::after { + content: ""; + position: absolute; + inset: 50% auto auto 50%; + width: 4px; + height: 4px; + border-radius: 50%; + background: var(--ig-success-700); + transform: translate(-50%, -50%); +} + +.styling-item igc-avatar { + --size: 40px; +} + +.styling-item.green igc-avatar { + --icon-color: #248436; + --ig-avatar-background: #A9CEB0; + --ig-avatar-color: #248436; +} + +.styling-item.pink igc-avatar { + --ig-avatar-background: #DA64FF; + --ig-avatar-color: var(--ig-gray-50); +} + +.styling-item igc-badge { + position: absolute; + inset-block-end: -2px; + inset-inline-end: -2px; +} + +.badge-styling { + display: flex; + align-items: center; + justify-content: center; + gap: 60px; + min-height: 7rem; +} + +.styling-item { + position: relative; + display: flex; +} diff --git a/samples/inputs/badge/styling/src/index.tsx b/samples/inputs/badge/styling/src/index.tsx index a1ef9955ab..ca4ee2ae91 100644 --- a/samples/inputs/badge/styling/src/index.tsx +++ b/samples/inputs/badge/styling/src/index.tsx @@ -1,22 +1,60 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; -import { IgrBadge } from 'igniteui-react'; +import { IgrAvatar, IgrBadge, IgrIcon, registerIconFromText } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; -export default class BadgeStyling extends React.Component { +const personIcon = + ''; +const photoCameraIcon = + ''; +const starBorderIcon = + ''; +const favoriteBorderIcon = + ''; - constructor(props: any) { - super(props); - } +export default function BadgeStyling(): JSX.Element { + useEffect(() => { + registerIconFromText('person', personIcon, 'material'); + registerIconFromText('photo_camera', photoCameraIcon, 'material'); + registerIconFromText('star_border', starBorderIcon, 'material'); + registerIconFromText('favorite_border', favoriteBorderIcon, 'material'); + }, []); - public render(): JSX.Element { - return ( -
- + return ( +
+
+ + + + + +
- ); - } +
+ + + + +
+
+ + + + 2 +
+
+ + +
+
+ ); } // rendering above class to the React DOM diff --git a/samples/inputs/badge/tailwind-styling/.devcontainer/devcontainer.json b/samples/inputs/badge/tailwind-styling/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..e0b8e9c925 --- /dev/null +++ b/samples/inputs/badge/tailwind-styling/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} \ No newline at end of file diff --git a/samples/inputs/badge/tailwind-styling/.eslintrc.js b/samples/inputs/badge/tailwind-styling/.eslintrc.js new file mode 100644 index 0000000000..b45160a9ee --- /dev/null +++ b/samples/inputs/badge/tailwind-styling/.eslintrc.js @@ -0,0 +1,75 @@ +// https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project +module.exports = { + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: { + jsx: true // Allows for the parsing of JSX + } + }, + settings: { + react: { + version: "999.999.999" // Tells eslint-plugin-react to automatically detect the version of React to use + } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react + "plugin:@typescript-eslint/recommended" // Uses the recommended rules from @typescript-eslint/eslint-plugin + ], + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + }, + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "rules": { + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + } + } + ] + }; \ No newline at end of file diff --git a/samples/inputs/badge/tailwind-styling/README.md b/samples/inputs/badge/tailwind-styling/README.md new file mode 100644 index 0000000000..91b2086a6b --- /dev/null +++ b/samples/inputs/badge/tailwind-styling/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Tailwind Styling feature using [Badge](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/badge/tailwind-styling +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/badge/tailwind-styling/index.html b/samples/inputs/badge/tailwind-styling/index.html new file mode 100644 index 0000000000..ce249e4444 --- /dev/null +++ b/samples/inputs/badge/tailwind-styling/index.html @@ -0,0 +1,11 @@ + + + + BadgeTailwindStyling + + + +
+ + + diff --git a/samples/inputs/badge/tailwind-styling/package.json b/samples/inputs/badge/tailwind-styling/package.json new file mode 100644 index 0000000000..a4300fd58d --- /dev/null +++ b/samples/inputs/badge/tailwind-styling/package.json @@ -0,0 +1,44 @@ +{ + "name": "react-badge-tailwind-styling", + "description": "This project provides example of Badge Tailwind Styling using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.1.14", + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "tailwindcss": "^4.1.14", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/inputs/badge/tailwind-styling/sandbox.config.json b/samples/inputs/badge/tailwind-styling/sandbox.config.json new file mode 100644 index 0000000000..00acba0c10 --- /dev/null +++ b/samples/inputs/badge/tailwind-styling/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} \ No newline at end of file diff --git a/samples/inputs/badge/tailwind-styling/src/index.css b/samples/inputs/badge/tailwind-styling/src/index.css new file mode 100644 index 0000000000..101b4607d2 --- /dev/null +++ b/samples/inputs/badge/tailwind-styling/src/index.css @@ -0,0 +1,74 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +@layer theme, base, components, utilities; +@import "tailwindcss/theme.css" layer(theme); +@import "tailwindcss/utilities.css" layer(utilities); + +igc-badge { + --ig-size: var(--ig-size-small); +} + +igc-avatar { + --size: 40px; + --ig-avatar-background: var(--ig-gray-700); + --ig-avatar-color: var(--ig-gray-50); +} + +igc-avatar igc-icon { + color: var(--ig-gray-50); +} + +.badge-close { + --ig-badge-background-color: var(--ig-error-500); +} + +.badge-close::part(base) { + background-color: var(--ig-error-500); +} + +.badge-volume { + --ig-badge-background-color: #8B5BB1; +} + +.badge-volume::part(base) { + background-color: #8B5BB1; +} + +.badge-remove { + --ig-badge-background-color: var(--ig-gray-900); +} + +.badge-remove::part(base) { + background-color: var(--ig-gray-900); +} + +.badge-check { + --ig-badge-background-color: var(--ig-success-600); +} + +.badge-check::part(base) { + background-color: var(--ig-success-600); +} + +.badge-style { + position: absolute; + inset-block-end: -4px; + inset-inline-end: -4px; +} + +.badge-style::part(base) { + border-radius: 50%; +} + +.badge-style igc-icon { + color: var(--ig-gray-50); +} + +.badge-parent { + display: flex; + align-items: center; + justify-content: center; + gap: 3rem; + min-height: 7rem; +} diff --git a/samples/inputs/badge/tailwind-styling/src/index.tsx b/samples/inputs/badge/tailwind-styling/src/index.tsx new file mode 100644 index 0000000000..a34c17722e --- /dev/null +++ b/samples/inputs/badge/tailwind-styling/src/index.tsx @@ -0,0 +1,63 @@ +import React, { useEffect } from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import { IgrAvatar, IgrBadge, IgrIcon, registerIconFromText } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/bootstrap.css'; + +const personIcon = + ''; +const closeIcon = + ''; +const volumeOffIcon = + ''; +const removeIcon = + ''; +const checkIcon = + ''; + +export default function BadgeTailwindStyling(): JSX.Element { + useEffect(() => { + registerIconFromText('person', personIcon, 'material'); + registerIconFromText('close', closeIcon, 'material'); + registerIconFromText('volume_off', volumeOffIcon, 'material'); + registerIconFromText('remove', removeIcon, 'material'); + registerIconFromText('check', checkIcon, 'material'); + }, []); + + return ( +
+
+ + + + +
+
+ + + + + + +
+
+ + + + +
+
+ + + + + + +
+
+ ); +} + +// rendering above class to the React DOM +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/badge/tailwind-styling/tsconfig.json b/samples/inputs/badge/tailwind-styling/tsconfig.json new file mode 100644 index 0000000000..e7db8a94f5 --- /dev/null +++ b/samples/inputs/badge/tailwind-styling/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "**/odatajs-4.0.0.js", + "config-overrides.js" + ], + "include": [ + "src" + ] +} diff --git a/samples/inputs/badge/tailwind-styling/vite.config.js b/samples/inputs/badge/tailwind-styling/vite.config.js new file mode 100644 index 0000000000..663868e022 --- /dev/null +++ b/samples/inputs/badge/tailwind-styling/vite.config.js @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import tailwindcss from '@tailwindcss/vite'; + +export default defineConfig({ + plugins: [react(), tailwindcss()], + build: { + outDir: 'build' + }, + server: { + open: false + }, +}); \ No newline at end of file diff --git a/samples/inputs/badge/type/.devcontainer/devcontainer.json b/samples/inputs/badge/type/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..ff434ecd44 --- /dev/null +++ b/samples/inputs/badge/type/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} diff --git a/samples/inputs/badge/type/.eslintrc.js b/samples/inputs/badge/type/.eslintrc.js new file mode 100644 index 0000000000..c2cac9dd96 --- /dev/null +++ b/samples/inputs/badge/type/.eslintrc.js @@ -0,0 +1,11 @@ +module.exports = { + parser: "@typescript-eslint/parser", + parserOptions: { ecmaVersion: 2020, sourceType: "module", ecmaFeatures: { jsx: true } }, + settings: { react: { version: "999.999.999" } }, + extends: ["eslint:recommended", "plugin:react/recommended", "plugin:@typescript-eslint/recommended"], + rules: { + "default-case": "off", "no-undef": "off", "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": "off", "@typescript-eslint/no-explicit-any": "off", + "react/react-in-jsx-scope": "off" + } +}; diff --git a/samples/inputs/badge/type/README.md b/samples/inputs/badge/type/README.md new file mode 100644 index 0000000000..9daca45c43 --- /dev/null +++ b/samples/inputs/badge/type/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Type feature using [Badge](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/badge/type +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/badge/type/index.html b/samples/inputs/badge/type/index.html new file mode 100644 index 0000000000..e6e3aa5702 --- /dev/null +++ b/samples/inputs/badge/type/index.html @@ -0,0 +1,11 @@ + + + + BadgeType + + + +
+ + + diff --git a/samples/inputs/badge/type/package.json b/samples/inputs/badge/type/package.json new file mode 100644 index 0000000000..15f063ec29 --- /dev/null +++ b/samples/inputs/badge/type/package.json @@ -0,0 +1,37 @@ +{ + "name": "react-badge-type", + "description": "This project provides example of Badge Type using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [">0.2%", "not dead", "not ie <= 11", "not op_mini all"] +} diff --git a/samples/inputs/badge/type/sandbox.config.json b/samples/inputs/badge/type/sandbox.config.json new file mode 100644 index 0000000000..49a80d1d8b --- /dev/null +++ b/samples/inputs/badge/type/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} diff --git a/samples/inputs/badge/type/src/index.css b/samples/inputs/badge/type/src/index.css new file mode 100644 index 0000000000..521f3f4dcc --- /dev/null +++ b/samples/inputs/badge/type/src/index.css @@ -0,0 +1,57 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-avatar { + --size: 40px; +} + +igc-badge { + --ig-size: var(--ig-size-small); + position: absolute; + inset-block-end: -6px; + inset-inline-end: -4px; +} + +.badge-type igc-badge::part(base), +.badge-type igc-badge igc-icon { + color: var(--ig-gray-50); +} + +.badge-type igc-badge igc-icon { + fill: var(--ig-gray-50); +} + +.badge-type { + display: flex; + align-items: center; + justify-content: center; + gap: 60px; + min-height: 7rem; +} + +.badge-type-item { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 16px; + min-width: 56px; + min-height: 72px; +} + +.avatar-wrapper { + position: relative; + display: flex; +} + +.dot-badge { + inset-block-end: 0; + inset-inline-end: 0; + --ig-badge-dot-size: 0.5rem; +} + +.badge-type-item span { + color: var(--ig-gray-700); + font-size: 12px; + line-height: 16px; +} diff --git a/samples/inputs/badge/type/src/index.tsx b/samples/inputs/badge/type/src/index.tsx new file mode 100644 index 0000000000..e5b881c715 --- /dev/null +++ b/samples/inputs/badge/type/src/index.tsx @@ -0,0 +1,59 @@ +import React, { useEffect } from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import { IgrAvatar, IgrBadge, IgrIcon, registerIconFromText } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/bootstrap.css'; + +const checkIcon = + ''; + +export default function BadgeType(): JSX.Element { + useEffect(() => { + registerIconFromText('check', checkIcon, 'material'); + }, []); + + return ( +
+
+
+ + +
+ Dot +
+
+
+ + + + +
+ Icon +
+
+
+ + + 2 + +
+ Text +
+
+ ); +} + +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/badge/type/tsconfig.json b/samples/inputs/badge/type/tsconfig.json new file mode 100644 index 0000000000..7dfd761170 --- /dev/null +++ b/samples/inputs/badge/type/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, "esModuleInterop": true, "baseUrl": ".", "outDir": "build/dist", + "module": "esnext", "target": "es5", "lib": ["es6", "dom"], "sourceMap": true, + "allowJs": true, "jsx": "react", "moduleResolution": "node", "rootDir": "src", + "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, "noImplicitThis": true, + "noImplicitAny": true, "noUnusedLocals": false, "importHelpers": true, + "allowSyntheticDefaultImports": true, "skipLibCheck": true, "strict": false, + "isolatedModules": true, "noEmit": true + }, + "exclude": ["node_modules", "build"], + "include": ["src"] +} diff --git a/samples/inputs/badge/type/vite.config.js b/samples/inputs/badge/type/vite.config.js new file mode 100644 index 0000000000..342e2b8e11 --- /dev/null +++ b/samples/inputs/badge/type/vite.config.js @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + build: { outDir: 'build' }, + server: { open: false }, +}); diff --git a/samples/inputs/badge/variants/src/index.css b/samples/inputs/badge/variants/src/index.css index 1f53b8aa05..f983e17588 100644 --- a/samples/inputs/badge/variants/src/index.css +++ b/samples/inputs/badge/variants/src/index.css @@ -1,2 +1,76 @@ /* shared styles are loaded from: */ -/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-badge { + --ig-size: var(--ig-size-small); + position: absolute; + inset-block-end: -4px; + inset-inline-end: -4px; +} + +igc-avatar { + --ig-size: var(--ig-size-small); + --ig-avatar-background: var(--ig-gray-700); + --ig-avatar-color: var(--ig-gray-50); +} + +.variant-item:first-child igc-avatar igc-icon, +.variant-item:nth-child(4) igc-avatar igc-icon { + color: var(--ig-gray-50); +} + +.badge-variants { + display: flex; + align-items: center; + justify-content: center; + gap: 40px; + min-height: 7rem; +} + +.variant-item { + display: flex; + flex-direction: column; + align-items: center; + gap: 12px; + min-width: 56px; +} + +.variant-item span { + color: var(--ig-gray-700); + font-size: 13px; +} + +.avatar-wrapper { + position: relative; + display: flex; +} + +.badge-info-blue { + --ig-badge-background-color: #0057A9; +} + +.badge-info-blue::part(base) { + background-color: #0057A9; +} + +.badge-primary-blue { + --ig-badge-background-color: #0070BA; +} + +.badge-primary-blue::part(base) { + background-color: #0070BA; +} + +.badge-warning-black::part(base) { + background-color: #FAA419; + color: #000; +} + +igc-badge::part(base), +igc-badge igc-icon { + color: var(--ig-gray-50); +} + +igc-badge igc-icon { + fill: var(--ig-gray-50); +} diff --git a/samples/inputs/badge/variants/src/index.tsx b/samples/inputs/badge/variants/src/index.tsx index b036427cbc..47cfdd62e8 100644 --- a/samples/inputs/badge/variants/src/index.tsx +++ b/samples/inputs/badge/variants/src/index.tsx @@ -1,24 +1,83 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; -import { IgrBadge } from 'igniteui-react'; +import { IgrAvatar, IgrBadge, IgrIcon, registerIconFromText } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; -export default class BadgeVariants extends React.Component { +const checkIcon = + ''; +const closeIcon = + ''; +const mailIcon = + ''; +const notificationsIcon = + ''; - constructor(props: any) { - super(props); - } +export default function BadgeVariants(): JSX.Element { + useEffect(() => { + registerIconFromText('check', checkIcon, 'material'); + registerIconFromText('close', closeIcon, 'material'); + registerIconFromText('mail', mailIcon, 'material'); + registerIconFromText('notifications', notificationsIcon, 'material'); + }, []); - public render(): JSX.Element { - return ( -
- + return ( +
+
+
+ + + + 2 +
+ Primary
- ); - } +
+
+ + + + +
+ Info +
+
+
+ + + + +
+ Success +
+
+
+ + + + 2 +
+ Warn +
+
+
+ + + + +
+ Error +
+
+ ); } // rendering above class to the React DOM const root = ReactDOM.createRoot(document.getElementById('root')); -root.render(); +root.render(); From 06ef216e363e6c8def7532d74d2878a2d72fbaf8 Mon Sep 17 00:00:00 2001 From: Adrian Petrov Date: Sat, 8 Aug 2026 02:59:57 +0300 Subject: [PATCH 18/23] feat(chip): add outlined sample --- .../outlined/.devcontainer/devcontainer.json | 4 + samples/inputs/chip/outlined/.eslintrc.js | 75 +++++++++++++++++++ samples/inputs/chip/outlined/README.md | 56 ++++++++++++++ samples/inputs/chip/outlined/index.html | 11 +++ samples/inputs/chip/outlined/package.json | 42 +++++++++++ .../inputs/chip/outlined/sandbox.config.json | 5 ++ samples/inputs/chip/outlined/src/index.css | 2 + samples/inputs/chip/outlined/src/index.tsx | 46 ++++++++++++ samples/inputs/chip/outlined/tsconfig.json | 44 +++++++++++ samples/inputs/chip/outlined/vite.config.js | 12 +++ 10 files changed, 297 insertions(+) create mode 100644 samples/inputs/chip/outlined/.devcontainer/devcontainer.json create mode 100644 samples/inputs/chip/outlined/.eslintrc.js create mode 100644 samples/inputs/chip/outlined/README.md create mode 100644 samples/inputs/chip/outlined/index.html create mode 100644 samples/inputs/chip/outlined/package.json create mode 100644 samples/inputs/chip/outlined/sandbox.config.json create mode 100644 samples/inputs/chip/outlined/src/index.css create mode 100644 samples/inputs/chip/outlined/src/index.tsx create mode 100644 samples/inputs/chip/outlined/tsconfig.json create mode 100644 samples/inputs/chip/outlined/vite.config.js diff --git a/samples/inputs/chip/outlined/.devcontainer/devcontainer.json b/samples/inputs/chip/outlined/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..e0b8e9c925 --- /dev/null +++ b/samples/inputs/chip/outlined/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} \ No newline at end of file diff --git a/samples/inputs/chip/outlined/.eslintrc.js b/samples/inputs/chip/outlined/.eslintrc.js new file mode 100644 index 0000000000..b45160a9ee --- /dev/null +++ b/samples/inputs/chip/outlined/.eslintrc.js @@ -0,0 +1,75 @@ +// https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project +module.exports = { + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: { + jsx: true // Allows for the parsing of JSX + } + }, + settings: { + react: { + version: "999.999.999" // Tells eslint-plugin-react to automatically detect the version of React to use + } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react + "plugin:@typescript-eslint/recommended" // Uses the recommended rules from @typescript-eslint/eslint-plugin + ], + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + }, + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "rules": { + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + } + } + ] + }; \ No newline at end of file diff --git a/samples/inputs/chip/outlined/README.md b/samples/inputs/chip/outlined/README.md new file mode 100644 index 0000000000..8ac24c4217 --- /dev/null +++ b/samples/inputs/chip/outlined/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Outlined feature using [Chip](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/chip/outlined +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/chip/outlined/index.html b/samples/inputs/chip/outlined/index.html new file mode 100644 index 0000000000..41301a55b9 --- /dev/null +++ b/samples/inputs/chip/outlined/index.html @@ -0,0 +1,11 @@ + + + + ChipOutlined + + + +
+ + + \ No newline at end of file diff --git a/samples/inputs/chip/outlined/package.json b/samples/inputs/chip/outlined/package.json new file mode 100644 index 0000000000..96c974cec7 --- /dev/null +++ b/samples/inputs/chip/outlined/package.json @@ -0,0 +1,42 @@ +{ + "name": "react-chip-outlined", + "description": "This project provides example of an Outlined Chips using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/inputs/chip/outlined/sandbox.config.json b/samples/inputs/chip/outlined/sandbox.config.json new file mode 100644 index 0000000000..00acba0c10 --- /dev/null +++ b/samples/inputs/chip/outlined/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} \ No newline at end of file diff --git a/samples/inputs/chip/outlined/src/index.css b/samples/inputs/chip/outlined/src/index.css new file mode 100644 index 0000000000..1f53b8aa05 --- /dev/null +++ b/samples/inputs/chip/outlined/src/index.css @@ -0,0 +1,2 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file diff --git a/samples/inputs/chip/outlined/src/index.tsx b/samples/inputs/chip/outlined/src/index.tsx new file mode 100644 index 0000000000..df805b75f5 --- /dev/null +++ b/samples/inputs/chip/outlined/src/index.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import { IgrChip } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/bootstrap.css'; + +export default class ChipOutlined extends React.Component { + + constructor(props: any) { + super(props); + } + + private handleChipRemove = (event: CustomEvent) => { + const chip = event.target as IgrChip; + chip.remove(); + } + + public render(): JSX.Element { + return ( +
+ + Default + + + Primary + + + Info + + + Success + + + Warning + + + Danger + +
+ ); + } +} + +// rendering above class to the React DOM +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/chip/outlined/tsconfig.json b/samples/inputs/chip/outlined/tsconfig.json new file mode 100644 index 0000000000..e7db8a94f5 --- /dev/null +++ b/samples/inputs/chip/outlined/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "**/odatajs-4.0.0.js", + "config-overrides.js" + ], + "include": [ + "src" + ] +} diff --git a/samples/inputs/chip/outlined/vite.config.js b/samples/inputs/chip/outlined/vite.config.js new file mode 100644 index 0000000000..1744dbc719 --- /dev/null +++ b/samples/inputs/chip/outlined/vite.config.js @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + build: { + outDir: 'build' + }, + server: { + open: false + }, +}); \ No newline at end of file From 250f521dc04f6ff638f084f911888c1429cf8a14 Mon Sep 17 00:00:00 2001 From: Ivan Minchev <61944284+IMinchev64@users.noreply.github.com> Date: Fri, 14 Aug 2026 16:46:33 +0300 Subject: [PATCH 19/23] feature(avatar): update avatar samples for new documentation (#1092) --- browser/package-lock.json | 47 ++-- browser/public/meta.json | 2 +- browser/src/index.css | 3 + browser/src/navigation/SamplesBrowser.json | 2 +- samples/layouts/avatar/icon/src/index.css | 0 samples/layouts/avatar/icon/src/index.tsx | 28 --- samples/layouts/avatar/image/src/index.tsx | 2 +- samples/layouts/avatar/initials/src/index.css | 0 samples/layouts/avatar/initials/src/index.tsx | 18 -- .../.devcontainer/devcontainer.json | 0 .../avatar/{icon => overview}/.eslintrc.js | 0 .../avatar/{initials => overview}/README.md | 8 +- .../avatar/{initials => overview}/index.html | 4 +- .../{initials => overview}/package.json | 4 +- .../{icon => overview}/sandbox.config.json | 0 samples/layouts/avatar/overview/src/index.css | 49 +++++ samples/layouts/avatar/overview/src/index.tsx | 62 ++++++ .../avatar/{icon => overview}/tsconfig.json | 0 .../avatar/{icon => overview}/vite.config.js | 0 samples/layouts/avatar/shape/src/index.css | 52 +++++ samples/layouts/avatar/shape/src/index.tsx | 99 +++++++-- samples/layouts/avatar/size/src/index.css | 60 ++++- samples/layouts/avatar/size/src/index.tsx | 77 +++++-- samples/layouts/avatar/styling/src/index.css | 60 +++-- samples/layouts/avatar/styling/src/index.tsx | 207 +++++++++++++++--- .../.devcontainer/devcontainer.json | 0 .../.eslintrc.js | 0 .../layouts/avatar/tailwind-styling/README.md | 56 +++++ .../avatar/tailwind-styling/index.html | 11 + .../avatar/tailwind-styling/package.json | 44 ++++ .../sandbox.config.json | 0 .../avatar/tailwind-styling/src/icons.ts | 11 + .../avatar/tailwind-styling/src/index.css | 3 + .../avatar/tailwind-styling/src/index.tsx | 180 +++++++++++++++ .../tsconfig.json | 0 .../avatar/tailwind-styling/vite.config.js | 13 ++ .../variants/.devcontainer/devcontainer.json | 4 + samples/layouts/avatar/variants/.eslintrc.js | 75 +++++++ .../avatar/{icon => variants}/README.md | 8 +- .../avatar/{icon => variants}/index.html | 4 +- .../avatar/{icon => variants}/package.json | 4 +- .../avatar/variants/sandbox.config.json | 5 + samples/layouts/avatar/variants/src/index.css | 52 +++++ samples/layouts/avatar/variants/src/index.tsx | 86 ++++++++ samples/layouts/avatar/variants/tsconfig.json | 44 ++++ .../{initials => variants}/vite.config.js | 0 46 files changed, 1193 insertions(+), 191 deletions(-) delete mode 100644 samples/layouts/avatar/icon/src/index.css delete mode 100644 samples/layouts/avatar/icon/src/index.tsx delete mode 100644 samples/layouts/avatar/initials/src/index.css delete mode 100644 samples/layouts/avatar/initials/src/index.tsx rename samples/layouts/avatar/{icon => overview}/.devcontainer/devcontainer.json (100%) rename samples/layouts/avatar/{icon => overview}/.eslintrc.js (100%) rename samples/layouts/avatar/{initials => overview}/README.md (91%) rename samples/layouts/avatar/{initials => overview}/index.html (85%) rename samples/layouts/avatar/{initials => overview}/package.json (87%) rename samples/layouts/avatar/{icon => overview}/sandbox.config.json (100%) create mode 100644 samples/layouts/avatar/overview/src/index.css create mode 100644 samples/layouts/avatar/overview/src/index.tsx rename samples/layouts/avatar/{icon => overview}/tsconfig.json (100%) rename samples/layouts/avatar/{icon => overview}/vite.config.js (100%) rename samples/layouts/avatar/{initials => tailwind-styling}/.devcontainer/devcontainer.json (100%) rename samples/layouts/avatar/{initials => tailwind-styling}/.eslintrc.js (100%) create mode 100644 samples/layouts/avatar/tailwind-styling/README.md create mode 100644 samples/layouts/avatar/tailwind-styling/index.html create mode 100644 samples/layouts/avatar/tailwind-styling/package.json rename samples/layouts/avatar/{initials => tailwind-styling}/sandbox.config.json (100%) create mode 100644 samples/layouts/avatar/tailwind-styling/src/icons.ts create mode 100644 samples/layouts/avatar/tailwind-styling/src/index.css create mode 100644 samples/layouts/avatar/tailwind-styling/src/index.tsx rename samples/layouts/avatar/{initials => tailwind-styling}/tsconfig.json (100%) create mode 100644 samples/layouts/avatar/tailwind-styling/vite.config.js create mode 100644 samples/layouts/avatar/variants/.devcontainer/devcontainer.json create mode 100644 samples/layouts/avatar/variants/.eslintrc.js rename samples/layouts/avatar/{icon => variants}/README.md (86%) rename samples/layouts/avatar/{icon => variants}/index.html (85%) rename samples/layouts/avatar/{icon => variants}/package.json (86%) create mode 100644 samples/layouts/avatar/variants/sandbox.config.json create mode 100644 samples/layouts/avatar/variants/src/index.css create mode 100644 samples/layouts/avatar/variants/src/index.tsx create mode 100644 samples/layouts/avatar/variants/tsconfig.json rename samples/layouts/avatar/{initials => variants}/vite.config.js (100%) diff --git a/browser/package-lock.json b/browser/package-lock.json index 3aae5f1550..a250139e76 100644 --- a/browser/package-lock.json +++ b/browser/package-lock.json @@ -4519,9 +4519,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", - "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "version": "2.11.12", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.12.tgz", + "integrity": "sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4767,9 +4767,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "version": "4.28.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz", + "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", "dev": true, "funding": [ { @@ -4787,11 +4787,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" + "baseline-browser-mapping": "^2.10.44", + "caniuse-lite": "^1.0.30001806", + "electron-to-chromium": "^1.5.393", + "node-releases": "^2.0.51", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -4942,9 +4942,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001776", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001776.tgz", - "integrity": "sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw==", + "version": "1.0.30001806", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", + "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", "dev": true, "funding": [ { @@ -5843,8 +5843,8 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "devOptional": true, "license": "Apache-2.0", - "optional": true, "engines": { "node": ">=8" } @@ -6070,9 +6070,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.307", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz", - "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==", + "version": "1.5.400", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.400.tgz", + "integrity": "sha512-96EWDNjM59SYflgeV5Ylsf4EMiq1a25YjCnJH7cxn/AF2H3pILRweaUnoLax0yKHWdpOzY6JKEu45e8irqZIHA==", "dev": true, "license": "ISC" }, @@ -13175,11 +13175,14 @@ } }, "node_modules/node-releases": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", - "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "version": "2.0.52", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.52.tgz", + "integrity": "sha512-MRlTqhAfoMx/4mhEbPo3Hi02g9LJZaJkka69V6h67Cb1gjrAG0jsTE4CZX1eptNx+VCAwJmfpnDIF4P0Nh1A7A==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/normalize-package-data": { "version": "2.5.0", diff --git a/browser/public/meta.json b/browser/public/meta.json index 717bce6e87..878e6465e4 100644 --- a/browser/public/meta.json +++ b/browser/public/meta.json @@ -1 +1 @@ -{"version":"23.2.915","date":"2026-08-05 23:55:42","note":"this file is auto-generated"} \ No newline at end of file +{"version":"23.2.915","date":"2026-08-05 23:55:42","note":"this file is auto-generated"} diff --git a/browser/src/index.css b/browser/src/index.css index 68ba452275..f5c1f70900 100644 --- a/browser/src/index.css +++ b/browser/src/index.css @@ -1,3 +1,6 @@ +@import "tailwindcss/utilities.css" layer(utilities); +@source "./samples/**/*.{ts,tsx,js,jsx}"; + #root, html, body, diff --git a/browser/src/navigation/SamplesBrowser.json b/browser/src/navigation/SamplesBrowser.json index 717bce6e87..878e6465e4 100644 --- a/browser/src/navigation/SamplesBrowser.json +++ b/browser/src/navigation/SamplesBrowser.json @@ -1 +1 @@ -{"version":"23.2.915","date":"2026-08-05 23:55:42","note":"this file is auto-generated"} \ No newline at end of file +{"version":"23.2.915","date":"2026-08-05 23:55:42","note":"this file is auto-generated"} diff --git a/samples/layouts/avatar/icon/src/index.css b/samples/layouts/avatar/icon/src/index.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/samples/layouts/avatar/icon/src/index.tsx b/samples/layouts/avatar/icon/src/index.tsx deleted file mode 100644 index 706a5ceac4..0000000000 --- a/samples/layouts/avatar/icon/src/index.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React, { useEffect } from 'react'; -import ReactDOM from 'react-dom/client'; -import './index.css'; -import { IgrAvatar, IgrIcon, registerIconFromText } from 'igniteui-react'; -import 'igniteui-webcomponents/themes/light/bootstrap.css'; - - -const homeIcon = - ''; - -export default function AvatarIcon() { - - useEffect(() => { - registerIconFromText("home", homeIcon, "material"); - }, []); - - return ( -
- - - -
- ); -} - -// rendering above component to the React DOM -const root = ReactDOM.createRoot(document.getElementById('root')); -root.render(); diff --git a/samples/layouts/avatar/image/src/index.tsx b/samples/layouts/avatar/image/src/index.tsx index e14eb26bc6..70af5a5a41 100644 --- a/samples/layouts/avatar/image/src/index.tsx +++ b/samples/layouts/avatar/image/src/index.tsx @@ -8,7 +8,7 @@ export default function AvatarImage() { return (
- +
); } diff --git a/samples/layouts/avatar/initials/src/index.css b/samples/layouts/avatar/initials/src/index.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/samples/layouts/avatar/initials/src/index.tsx b/samples/layouts/avatar/initials/src/index.tsx deleted file mode 100644 index 402d22ac49..0000000000 --- a/samples/layouts/avatar/initials/src/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import './index.css'; -import { IgrAvatar } from 'igniteui-react'; -import 'igniteui-webcomponents/themes/light/bootstrap.css'; - -export default function AvatarInitials() { - - return ( -
- -
- ); -} - -// rendering above component to the React DOM -const root = ReactDOM.createRoot(document.getElementById('root')); -root.render(); diff --git a/samples/layouts/avatar/icon/.devcontainer/devcontainer.json b/samples/layouts/avatar/overview/.devcontainer/devcontainer.json similarity index 100% rename from samples/layouts/avatar/icon/.devcontainer/devcontainer.json rename to samples/layouts/avatar/overview/.devcontainer/devcontainer.json diff --git a/samples/layouts/avatar/icon/.eslintrc.js b/samples/layouts/avatar/overview/.eslintrc.js similarity index 100% rename from samples/layouts/avatar/icon/.eslintrc.js rename to samples/layouts/avatar/overview/.eslintrc.js diff --git a/samples/layouts/avatar/initials/README.md b/samples/layouts/avatar/overview/README.md similarity index 91% rename from samples/layouts/avatar/initials/README.md rename to samples/layouts/avatar/overview/README.md index 37058af143..9a54ce74bc 100644 --- a/samples/layouts/avatar/initials/README.md +++ b/samples/layouts/avatar/overview/README.md @@ -1,7 +1,7 @@ -This folder contains implementation of React application with example of Initials feature using [Avatar](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. +This folder contains implementation of React application with example of Overview feature using [Avatar](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. @@ -12,10 +12,10 @@ This folder contains implementation of React application with example of Initial View Code - + Run Sample - + Run Sample @@ -34,7 +34,7 @@ Follow these instructions to run this example: git clone https://github.com/IgniteUI/igniteui-react-examples.git git checkout master cd ./igniteui-react-examples -cd ./samples/layouts/avatar/initials +cd ./samples/layouts/avatar/overview ``` open above folder in VS Code or type: diff --git a/samples/layouts/avatar/initials/index.html b/samples/layouts/avatar/overview/index.html similarity index 85% rename from samples/layouts/avatar/initials/index.html rename to samples/layouts/avatar/overview/index.html index 84267d5944..283cc238f6 100644 --- a/samples/layouts/avatar/initials/index.html +++ b/samples/layouts/avatar/overview/index.html @@ -1,11 +1,11 @@ - AvatarInitials + AvatarOverview
- \ No newline at end of file + diff --git a/samples/layouts/avatar/initials/package.json b/samples/layouts/avatar/overview/package.json similarity index 87% rename from samples/layouts/avatar/initials/package.json rename to samples/layouts/avatar/overview/package.json index a5a7b54e4d..9be32ebca8 100644 --- a/samples/layouts/avatar/initials/package.json +++ b/samples/layouts/avatar/overview/package.json @@ -1,6 +1,6 @@ { - "name": "react-avatar-initials", - "description": "This project provides example of Avatar Initials using Infragistics React components", + "name": "react-avatar-overview", + "description": "This project provides example of Avatar Overview using Infragistics React components", "author": "Infragistics", "homepage": ".", "version": "1.4.0", diff --git a/samples/layouts/avatar/icon/sandbox.config.json b/samples/layouts/avatar/overview/sandbox.config.json similarity index 100% rename from samples/layouts/avatar/icon/sandbox.config.json rename to samples/layouts/avatar/overview/sandbox.config.json diff --git a/samples/layouts/avatar/overview/src/index.css b/samples/layouts/avatar/overview/src/index.css new file mode 100644 index 0000000000..e5faf87285 --- /dev/null +++ b/samples/layouts/avatar/overview/src/index.css @@ -0,0 +1,49 @@ +.avatar-overview-sample { + display: flex; + align-items: center; + justify-content: center; + gap: 90px; +} + +.size-large { + --ig-size: var(--ig-size-large); +} + +.avatar-with-badge { + position: relative; + display: inline-flex; +} + +.avatar-status { + position: absolute; + right: 6px; + bottom: 6px; +} + +.avatar-stack { + display: inline-flex; + align-items: center; +} + +.avatar-stack .size-large { + margin-left: -24px; +} + +.avatar-stack .size-large:first-child { + margin-left: 0; +} + +.avatar-stack .size-large::part(base) { + border: 4px solid #fff; + box-sizing: border-box; +} + +.avatar-stack .size-large:last-child { + --ig-avatar-background: #e8eef6; + --ig-avatar-color: #6f8097; +} + +.avatar-stack .size-large:last-child::part(initials) { + font-size: 32px; + font-weight: 500; +} diff --git a/samples/layouts/avatar/overview/src/index.tsx b/samples/layouts/avatar/overview/src/index.tsx new file mode 100644 index 0000000000..2892a11193 --- /dev/null +++ b/samples/layouts/avatar/overview/src/index.tsx @@ -0,0 +1,62 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import "./index.css"; +import { IgrAvatar, IgrBadge } from "igniteui-react"; +import "igniteui-webcomponents/themes/light/material.css"; + +export default function AvatarOverview() { + return ( +
+ + + + + + + + + + + +
+ ); +} + +// rendering above component to the React DOM +const root = ReactDOM.createRoot(document.getElementById("root")); +root.render(); diff --git a/samples/layouts/avatar/icon/tsconfig.json b/samples/layouts/avatar/overview/tsconfig.json similarity index 100% rename from samples/layouts/avatar/icon/tsconfig.json rename to samples/layouts/avatar/overview/tsconfig.json diff --git a/samples/layouts/avatar/icon/vite.config.js b/samples/layouts/avatar/overview/vite.config.js similarity index 100% rename from samples/layouts/avatar/icon/vite.config.js rename to samples/layouts/avatar/overview/vite.config.js diff --git a/samples/layouts/avatar/shape/src/index.css b/samples/layouts/avatar/shape/src/index.css index e69de29bb2..a477d54e9d 100644 --- a/samples/layouts/avatar/shape/src/index.css +++ b/samples/layouts/avatar/shape/src/index.css @@ -0,0 +1,52 @@ +.avatar-overview-sample { + display: flex; + align-items: center; + justify-content: center; + gap: 90px; + min-height: 100vh; +} + +.size-small { + --ig-size: var(--ig-size-small); +} + +.avatar-variant { + display: inline-flex; + flex-direction: column; + align-items: center; + gap: 8px; +} + +.avatar-label { + color: var(--ig-gray-600); + font-size: 0.875rem; + line-height: 1.25rem; +} + +.avatar-with-badge { + position: relative; + display: inline-flex; +} + +.avatar-status { + --size: 18px; + position: absolute; + right: -4px; + bottom: -4px; + font-size: 0.75rem; + line-height: 1; +} + +.avatar-dot-badge { + --size: 12px; + right: 3px; + bottom: 3px; +} + +.avatar-count-badge { + --ig-badge-text-color: #ffffff; +} + +.avatar-check-badge { + --ig-badge-icon-color: #ffffff; +} diff --git a/samples/layouts/avatar/shape/src/index.tsx b/samples/layouts/avatar/shape/src/index.tsx index 62fe5a460a..adaaac1538 100644 --- a/samples/layouts/avatar/shape/src/index.tsx +++ b/samples/layouts/avatar/shape/src/index.tsx @@ -1,27 +1,86 @@ -import React, { useEffect } from 'react'; -import ReactDOM from 'react-dom/client'; -import './index.css'; -import { IgrAvatar, IgrIcon, registerIconFromText } from 'igniteui-react'; -import 'igniteui-webcomponents/themes/light/bootstrap.css'; +import React, { useEffect } from "react"; +import ReactDOM from "react-dom/client"; +import "./index.css"; +import { + IgrAvatar, + IgrBadge, + IgrIcon, + registerIconFromText, +} from "igniteui-react"; +import "igniteui-webcomponents/themes/light/material.css"; -const homeIcon = - ''; +const mailIcon = + ''; + +const checkIcon = + ''; export default function AvatarShape() { + useEffect(() => { + registerIconFromText("mail", mailIcon, "material"); + registerIconFromText("check", checkIcon, "material"); + }, []); + + return ( +
+
+ + + + + Circle +
+ +
+ + + + + + 2 + + + Square +
- useEffect(() => { - registerIconFromText("home", homeIcon, "material"); - }, []); - - return ( -
- - - -
- ); +
+ + + + + + + Rounded +
+
+ ); } // rendering above component to the React DOM -const root = ReactDOM.createRoot(document.getElementById('root')); -root.render(); +const root = ReactDOM.createRoot(document.getElementById("root")); +root.render(); diff --git a/samples/layouts/avatar/size/src/index.css b/samples/layouts/avatar/size/src/index.css index 325c9f8e57..00002afa14 100644 --- a/samples/layouts/avatar/size/src/index.css +++ b/samples/layouts/avatar/size/src/index.css @@ -1,16 +1,60 @@ -.size-small { - --ig-size: var(--ig-size-small); +.avatar-overview-sample { + display: flex; + align-items: center; + justify-content: center; + gap: 90px; + min-height: 100vh; } +.size-large { + --ig-size: var(--ig-size-large); +} .size-medium { - --ig-size: var(--ig-size-medium); + --ig-size: var(--ig-size-medium); +} +.size-small { + --ig-size: var(--ig-size-small); } -.size-large { - --ig-size: var(--ig-size-large); +.avatar-variant { + display: inline-flex; + flex-direction: column; + align-items: center; + gap: 8px; +} + +.avatar-with-badge { + width: 88px; + height: 88px; + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.avatar-label { + color: var(--ig-gray-600); + font-size: 0.875rem; + line-height: 1.25rem; +} + +.avatar-status { + --size: 18px; + position: absolute; + right: var(--badge-offset); + bottom: var(--badge-offset); + font-size: 0.75rem; + line-height: 1; +} + +.avatar-with-badge:has(.size-large) { + --badge-offset: 7px; +} + +.avatar-with-badge:has(.size-medium) { + --badge-offset: 15px; } -.sample { - flex-direction: row; - gap: 10px; +.avatar-with-badge:has(.size-small) { + --badge-offset: 24px; } diff --git a/samples/layouts/avatar/size/src/index.tsx b/samples/layouts/avatar/size/src/index.tsx index dfb5f9bb60..e2cff6bac6 100644 --- a/samples/layouts/avatar/size/src/index.tsx +++ b/samples/layouts/avatar/size/src/index.tsx @@ -1,20 +1,69 @@ -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import './index.css'; -import { IgrAvatar } from 'igniteui-react'; -import 'igniteui-webcomponents/themes/light/bootstrap.css'; +import React from "react"; +import ReactDOM from "react-dom/client"; +import "./index.css"; +import { IgrAvatar, IgrBadge } from "igniteui-react"; +import "igniteui-webcomponents/themes/light/material.css"; export default function AvatarSize() { + return ( +
+
+ + + + + Large +
- return ( -
- - - -
- ); +
+ + + + + Medium +
+ +
+ + + + + Small +
+
+ ); } // rendering above component to the React DOM -const root = ReactDOM.createRoot(document.getElementById('root')); -root.render(); +const root = ReactDOM.createRoot(document.getElementById("root")); +root.render(); diff --git a/samples/layouts/avatar/styling/src/index.css b/samples/layouts/avatar/styling/src/index.css index df45dd1716..4f5edce1c6 100644 --- a/samples/layouts/avatar/styling/src/index.css +++ b/samples/layouts/avatar/styling/src/index.css @@ -1,51 +1,43 @@ -.sizes .size-small { - --ig-size: var(--ig-size-small); +.sample { + display: flex; + align-items: center; + justify-content: center; } -.sizes .size-medium { - --ig-size: var(--ig-size-medium); +.chat-list { + width: 344px; + max-width: 100%; } -.sizes .size-large, -.size-large { - --ig-size: var(--ig-size-large); +.size-small { + --ig-size: var(--ig-size-small); } -.sample { - display: flex; - flex-direction: row; - justify-content: space-around; - gap: 10px; - margin-top: 20px; +.size-medium { + --ig-size: var(--ig-size-medium); } -.sizes { - display: flex; - flex-direction: row; - gap: 10px; +.size-large { + --ig-size: var(--ig-size-large); } -igc-avatar { - --ig-avatar-background: var(--ig-success-100); +.avatar-with-badge { + position: relative; + display: inline-flex; } -igc-avatar::part(base) { - border: 2px solid var(--ig-error-500); +.avatar-status { + --ig-badge-icon-color: #ffffff; + position: absolute; + right: -4px; + bottom: -4px; } -igc-avatar::part(initials) { - color: var(--ig-success-500-contrast); - background: var(--ig-error-500); - padding: 5px 10px; - margin: 10px; - border-radius: 50px; - /* border: 1px solid greenyellow; */ +.avatar-muted-badge { + --ig-badge-background-color: var(--ig-gray-300); + --ig-badge-icon-color: var(--ig-gray-700); } -igc-avatar::part(image) { - border-radius: 20px; - padding: 5px; - border: 2px solid var(--ig-primary-500); +.avatar-muted { + --ig-avatar-background: #D2DBE8; } - - diff --git a/samples/layouts/avatar/styling/src/index.tsx b/samples/layouts/avatar/styling/src/index.tsx index 3a751e8659..0d427044c9 100644 --- a/samples/layouts/avatar/styling/src/index.tsx +++ b/samples/layouts/avatar/styling/src/index.tsx @@ -1,36 +1,187 @@ -import React, { useEffect } from 'react'; -import ReactDOM from 'react-dom/client'; -import './index.css'; -import { IgrAvatar, IgrIcon, registerIconFromText } from 'igniteui-react'; -import 'igniteui-webcomponents/themes/light/bootstrap.css'; +import React, { useEffect } from "react"; +import ReactDOM from "react-dom/client"; +import "./index.css"; +import { + IgrList, + IgrListHeader, + IgrListItem, + IgrAvatar, + IgrBadge, + IgrIcon, + registerIconFromText, +} from "igniteui-react"; +import "igniteui-webcomponents/themes/light/material.css"; +const checkIcon = + ''; -const homeIcon = - ''; +const calendarIcon = + ''; + +const xIcon = + ''; + +const horizontalRuleIcon = + ''; + +const groupIcon = + ''; + +type AvatarListItem = { + title: string; + subtitle: string; + end: string; + avatar: { + src?: string; + icon?: string; + initials?: string; + alt: string; + className?: string; + }; + badge?: { + icon: string; + variant: "success" | "info" | "warning" | "danger" | "primary"; + className?: string; + }; +}; + +type AvatarListSection = { + header: string; + items: AvatarListItem[]; +}; + +const sections: AvatarListSection[] = [ + { + header: "Chats", + items: [ + { + title: "Nick Evans", + subtitle: "Hi Samira, thanks for the ...", + end: "9:44 AM", + avatar: { + src: "https://dl.infragistics.com/x/img/avatars/avatar-profile-07.png", + alt: "A profile photo of Nick Evans.", + }, + badge: { + icon: "check", + variant: "success", + }, + }, + { + title: "James Ford", + subtitle: "I'll send the text and im ...", + end: "8:30 AM", + avatar: { + initials: "JF", + alt: "A profile photo of Nick Evans.", + className: "avatar-muted", + }, + badge: { + icon: "x", + variant: "primary", + className: "avatar-muted-badge", + }, + }, + { + title: "Kate Porter", + subtitle: "That's great!", + end: "Yesterday", + avatar: { + src: "https://dl.infragistics.com/x/img/avatars/avatar-profile-08.png", + alt: "A profile photo of Nick Evans.", + }, + badge: { + icon: "horizontalRule", + variant: "danger", + }, + }, + ], + }, + { + header: "Meetings", + items: [ + { + title: "Weekly Meeting", + subtitle: "https://www.infra.com", + end: "Monday", + avatar: { + icon: "calendar", + alt: "Calendar Icon.", + }, + }, + { + title: "Design Discussion", + subtitle: "https://www.infra.com", + end: "11:30 AM", + avatar: { + icon: "group", + alt: "Group Icon.", + }, + }, + ], + }, +]; + +function renderAvatar(item: AvatarListItem) { + return ( + + {item.avatar.icon && ( + + )} + + ); +} export default function AvatarStyling() { + useEffect(() => { + registerIconFromText("calendar", calendarIcon, "material"); + registerIconFromText("check", checkIcon, "material"); + registerIconFromText("x", xIcon, "material"); + registerIconFromText("horizontalRule", horizontalRuleIcon, "material"); + registerIconFromText("group", groupIcon, "material"); + }, []); - useEffect(() => { - registerIconFromText("home", homeIcon, "material"); - }, []); - - return ( -
- - - -
- - - -
-
- ); + return ( +
+ + {sections.map((section) => ( + + {section.header} + {section.items.map((item) => ( + +
+ {renderAvatar(item)} + {item.badge && ( + + + + )} +
+

{item.title}

+ {item.subtitle} +
{item.end}
+
+ ))} +
+ ))} +
+
+ ); } // rendering above component to the React DOM -const root = ReactDOM.createRoot(document.getElementById('root')); -root.render(); +const root = ReactDOM.createRoot(document.getElementById("root")); +root.render(); diff --git a/samples/layouts/avatar/initials/.devcontainer/devcontainer.json b/samples/layouts/avatar/tailwind-styling/.devcontainer/devcontainer.json similarity index 100% rename from samples/layouts/avatar/initials/.devcontainer/devcontainer.json rename to samples/layouts/avatar/tailwind-styling/.devcontainer/devcontainer.json diff --git a/samples/layouts/avatar/initials/.eslintrc.js b/samples/layouts/avatar/tailwind-styling/.eslintrc.js similarity index 100% rename from samples/layouts/avatar/initials/.eslintrc.js rename to samples/layouts/avatar/tailwind-styling/.eslintrc.js diff --git a/samples/layouts/avatar/tailwind-styling/README.md b/samples/layouts/avatar/tailwind-styling/README.md new file mode 100644 index 0000000000..782eb476b1 --- /dev/null +++ b/samples/layouts/avatar/tailwind-styling/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Tailwind Styling feature using [Avatar](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/layouts/avatar/tailwind-styling +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/layouts/avatar/tailwind-styling/index.html b/samples/layouts/avatar/tailwind-styling/index.html new file mode 100644 index 0000000000..e5ae645b18 --- /dev/null +++ b/samples/layouts/avatar/tailwind-styling/index.html @@ -0,0 +1,11 @@ + + + + AvatarTailwindStyling + + + +
+ + + diff --git a/samples/layouts/avatar/tailwind-styling/package.json b/samples/layouts/avatar/tailwind-styling/package.json new file mode 100644 index 0000000000..771b99ef8d --- /dev/null +++ b/samples/layouts/avatar/tailwind-styling/package.json @@ -0,0 +1,44 @@ +{ + "name": "react-avatar-tailwind-styling", + "description": "This project provides example of Avatar Tailwind styling using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.3.3", + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "tailwindcss": "^4.3.3", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/layouts/avatar/initials/sandbox.config.json b/samples/layouts/avatar/tailwind-styling/sandbox.config.json similarity index 100% rename from samples/layouts/avatar/initials/sandbox.config.json rename to samples/layouts/avatar/tailwind-styling/sandbox.config.json diff --git a/samples/layouts/avatar/tailwind-styling/src/icons.ts b/samples/layouts/avatar/tailwind-styling/src/icons.ts new file mode 100644 index 0000000000..1e53ff276b --- /dev/null +++ b/samples/layouts/avatar/tailwind-styling/src/icons.ts @@ -0,0 +1,11 @@ +export const instagramIcon = + ''; + +export const berealIcon = + ''; + +export const threadsIcon = + ''; + +export const plusIcon = + ''; diff --git a/samples/layouts/avatar/tailwind-styling/src/index.css b/samples/layouts/avatar/tailwind-styling/src/index.css new file mode 100644 index 0000000000..40be077dd4 --- /dev/null +++ b/samples/layouts/avatar/tailwind-styling/src/index.css @@ -0,0 +1,3 @@ +@import "tailwindcss/theme.css" layer(theme); +@import "tailwindcss/utilities.css" layer(utilities); +@source "./index.tsx"; diff --git a/samples/layouts/avatar/tailwind-styling/src/index.tsx b/samples/layouts/avatar/tailwind-styling/src/index.tsx new file mode 100644 index 0000000000..f592b9bdba --- /dev/null +++ b/samples/layouts/avatar/tailwind-styling/src/index.tsx @@ -0,0 +1,180 @@ +import React, { useEffect } from "react"; +import ReactDOM from "react-dom/client"; +import "./index.css"; +import { + IgrAvatar, + IgrButton, + IgrCard, + IgrCardActions, + IgrCardContent, + IgrCardHeader, + IgrCardMedia, + IgrDivider, + IgrIcon, + IgrIconButton, + registerIconFromText, +} from "igniteui-react"; +import "igniteui-webcomponents/themes/light/material.css"; +import { berealIcon, instagramIcon, plusIcon, threadsIcon } from "./icons"; + +const profileStats = [ + { value: "23.9K", label: "Likes" }, + { value: "163", label: "Posts" }, + { value: "23.9K", label: "Views" }, +]; + +export default function AvatarTailwindStyling() { + useEffect(() => { + registerIconFromText("instagram", instagramIcon, "material"); + registerIconFromText("bereal", berealIcon, "material"); + registerIconFromText("threads", threadsIcon, "material"); + registerIconFromText("plus", plusIcon, "material"); + }, []); + + return ( +
+ + + Cafe interior + + + + Kate Thompson + + +

+ 3D Artist. Turning polygons into worlds and immersive digital + realities +

+
+ {profileStats.map((stat, index) => ( + +
+ + {stat.value} + + + {stat.label} + +
+ {index < profileStats.length - 1 && ( + + )} +
+ ))} +
+
+ + + + FOLLOW + + + +
+ + + +
+
+
+ + + + + + + Kate Thompson + + +

+ 3D Artist. Turning polygons into worlds and immersive digital + realities +

+
+ {profileStats.map((stat, index) => ( + +
+ + {stat.value} + + + {stat.label} + +
+ {index < profileStats.length - 1 && ( + + )} +
+ ))} +
+
+ + + + FOLLOW + + + +
+ + + +
+
+
+
+ ); +} + +// rendering above component to the React DOM +const root = ReactDOM.createRoot(document.getElementById("root")); +root.render(); diff --git a/samples/layouts/avatar/initials/tsconfig.json b/samples/layouts/avatar/tailwind-styling/tsconfig.json similarity index 100% rename from samples/layouts/avatar/initials/tsconfig.json rename to samples/layouts/avatar/tailwind-styling/tsconfig.json diff --git a/samples/layouts/avatar/tailwind-styling/vite.config.js b/samples/layouts/avatar/tailwind-styling/vite.config.js new file mode 100644 index 0000000000..c1fff0c83c --- /dev/null +++ b/samples/layouts/avatar/tailwind-styling/vite.config.js @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import tailwindcss from '@tailwindcss/vite'; + +export default defineConfig({ + plugins: [react(), tailwindcss()], + build: { + outDir: 'build' + }, + server: { + open: false + }, +}); diff --git a/samples/layouts/avatar/variants/.devcontainer/devcontainer.json b/samples/layouts/avatar/variants/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..e0b8e9c925 --- /dev/null +++ b/samples/layouts/avatar/variants/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} \ No newline at end of file diff --git a/samples/layouts/avatar/variants/.eslintrc.js b/samples/layouts/avatar/variants/.eslintrc.js new file mode 100644 index 0000000000..b45160a9ee --- /dev/null +++ b/samples/layouts/avatar/variants/.eslintrc.js @@ -0,0 +1,75 @@ +// https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project +module.exports = { + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: { + jsx: true // Allows for the parsing of JSX + } + }, + settings: { + react: { + version: "999.999.999" // Tells eslint-plugin-react to automatically detect the version of React to use + } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react + "plugin:@typescript-eslint/recommended" // Uses the recommended rules from @typescript-eslint/eslint-plugin + ], + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + }, + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "rules": { + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + } + } + ] + }; \ No newline at end of file diff --git a/samples/layouts/avatar/icon/README.md b/samples/layouts/avatar/variants/README.md similarity index 86% rename from samples/layouts/avatar/icon/README.md rename to samples/layouts/avatar/variants/README.md index f5bed3792e..1c79b80274 100644 --- a/samples/layouts/avatar/icon/README.md +++ b/samples/layouts/avatar/variants/README.md @@ -1,7 +1,7 @@ -This folder contains implementation of React application with example of Icon feature using [Avatar](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. +This folder contains implementation of React application with example of Variants feature using [Avatar](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. @@ -12,10 +12,10 @@ This folder contains implementation of React application with example of Icon fe View Code - + Run Sample - + Run Sample @@ -34,7 +34,7 @@ Follow these instructions to run this example: git clone https://github.com/IgniteUI/igniteui-react-examples.git git checkout master cd ./igniteui-react-examples -cd ./samples/layouts/avatar/icon +cd ./samples/layouts/avatar/variants ``` open above folder in VS Code or type: diff --git a/samples/layouts/avatar/icon/index.html b/samples/layouts/avatar/variants/index.html similarity index 85% rename from samples/layouts/avatar/icon/index.html rename to samples/layouts/avatar/variants/index.html index 289c161876..b4669ae346 100644 --- a/samples/layouts/avatar/icon/index.html +++ b/samples/layouts/avatar/variants/index.html @@ -1,11 +1,11 @@ - AvatarIcon + AvatarVariants
- \ No newline at end of file + diff --git a/samples/layouts/avatar/icon/package.json b/samples/layouts/avatar/variants/package.json similarity index 86% rename from samples/layouts/avatar/icon/package.json rename to samples/layouts/avatar/variants/package.json index 388946038c..2edc46b8a0 100644 --- a/samples/layouts/avatar/icon/package.json +++ b/samples/layouts/avatar/variants/package.json @@ -1,6 +1,6 @@ { - "name": "react-date-picker-overview", - "description": "This project provides example of Date Picker Overview using Infragistics React components", + "name": "react-avatar-variants", + "description": "This project provides example of Avatar Variants using Infragistics React components", "author": "Infragistics", "homepage": ".", "version": "1.4.0", diff --git a/samples/layouts/avatar/variants/sandbox.config.json b/samples/layouts/avatar/variants/sandbox.config.json new file mode 100644 index 0000000000..00acba0c10 --- /dev/null +++ b/samples/layouts/avatar/variants/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} \ No newline at end of file diff --git a/samples/layouts/avatar/variants/src/index.css b/samples/layouts/avatar/variants/src/index.css new file mode 100644 index 0000000000..a477d54e9d --- /dev/null +++ b/samples/layouts/avatar/variants/src/index.css @@ -0,0 +1,52 @@ +.avatar-overview-sample { + display: flex; + align-items: center; + justify-content: center; + gap: 90px; + min-height: 100vh; +} + +.size-small { + --ig-size: var(--ig-size-small); +} + +.avatar-variant { + display: inline-flex; + flex-direction: column; + align-items: center; + gap: 8px; +} + +.avatar-label { + color: var(--ig-gray-600); + font-size: 0.875rem; + line-height: 1.25rem; +} + +.avatar-with-badge { + position: relative; + display: inline-flex; +} + +.avatar-status { + --size: 18px; + position: absolute; + right: -4px; + bottom: -4px; + font-size: 0.75rem; + line-height: 1; +} + +.avatar-dot-badge { + --size: 12px; + right: 3px; + bottom: 3px; +} + +.avatar-count-badge { + --ig-badge-text-color: #ffffff; +} + +.avatar-check-badge { + --ig-badge-icon-color: #ffffff; +} diff --git a/samples/layouts/avatar/variants/src/index.tsx b/samples/layouts/avatar/variants/src/index.tsx new file mode 100644 index 0000000000..45146dccea --- /dev/null +++ b/samples/layouts/avatar/variants/src/index.tsx @@ -0,0 +1,86 @@ +import React, { useEffect } from "react"; +import ReactDOM from "react-dom/client"; +import "./index.css"; +import { + IgrAvatar, + IgrBadge, + IgrIcon, + registerIconFromText, +} from "igniteui-react"; +import "igniteui-webcomponents/themes/light/material.css"; + +const mailIcon = + ''; + +const checkIcon = + ''; + +export default function AvatarVariants() { + useEffect(() => { + registerIconFromText("mail", mailIcon, "material"); + registerIconFromText("check", checkIcon, "material"); + }, []); + + return ( +
+
+ + + + + Image +
+ +
+ + + + + + 2 + + + Icon +
+ +
+ + + + + + + Initials +
+
+ ); +} + +// rendering above component to the React DOM +const root = ReactDOM.createRoot(document.getElementById("root")); +root.render(); diff --git a/samples/layouts/avatar/variants/tsconfig.json b/samples/layouts/avatar/variants/tsconfig.json new file mode 100644 index 0000000000..8c0d146f95 --- /dev/null +++ b/samples/layouts/avatar/variants/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react-jsx", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "**/odatajs-4.0.0.js", + "config-overrides.js" + ], + "include": [ + "src" + ] +} diff --git a/samples/layouts/avatar/initials/vite.config.js b/samples/layouts/avatar/variants/vite.config.js similarity index 100% rename from samples/layouts/avatar/initials/vite.config.js rename to samples/layouts/avatar/variants/vite.config.js From bc10abd39b1f8d94901055a2dffa5b27f62245a1 Mon Sep 17 00:00:00 2001 From: Hristo Hristov <57346540+Hristo313@users.noreply.github.com> Date: Mon, 24 Aug 2026 16:07:54 +0300 Subject: [PATCH 20/23] feat(button-group): update button group samples (#1095) * feat(button-group): add layout sample * feat(button-group): update the samples * feat(button-group): update samples content * feat(button-group): update selection sample, remove buttons-amount sample * fix(button-group): swap states and interaction states samples * fix(button-group): update labels styling * fix(button-group): update tailwind styling * fix(button-group): update some styling * fix(button-group): center states labels --------- Co-authored-by: Stamen Stoychev --- browser/public/meta.json | 2 +- browser/src/navigation/SamplesBrowser.json | 2 +- samples/inputs/badge/icon/src/index.css | 9 ++- samples/inputs/badge/outlined/src/index.css | 7 +- samples/inputs/badge/shape/src/index.css | 9 ++- samples/inputs/badge/size/src/index.css | 9 ++- samples/inputs/badge/type/src/index.css | 10 ++- samples/inputs/badge/variants/src/index.css | 7 +- .../alignment/src/ButtonGroupAlignment.css | 40 +++++++++- .../button-group/alignment/src/index.tsx | 51 ++++++------ .../.devcontainer/devcontainer.json | 4 + .../button-group/custom-toggle/README.md | 56 +++++++++++++ .../button-group/custom-toggle/index.html | 11 +++ .../button-group/custom-toggle/package.json | 12 +++ .../custom-toggle/sandbox.config.json | 5 ++ .../button-group/custom-toggle/src/index.css | 13 +++ .../button-group/custom-toggle/src/index.tsx | 35 ++++++++ .../button-group/custom-toggle/tsconfig.json | 4 + .../button-group/custom-toggle/vite.config.js | 3 + .../.devcontainer/devcontainer.json | 4 + .../interaction-states/.eslintrc.js | 75 ++++++++++++++++++ .../button-group/interaction-states/README.md | 56 +++++++++++++ .../interaction-states/index.html | 11 +++ .../interaction-states/package.json | 42 ++++++++++ .../interaction-states/sandbox.config.json | 5 ++ .../src/ButtonGroupStates.css | 76 ++++++++++++++++++ .../interaction-states/src/index.css | 2 + .../interaction-states/src/index.tsx | 49 ++++++++++++ .../interaction-states/tsconfig.json | 44 +++++++++++ .../interaction-states/vite.config.js | 12 +++ .../layout/.devcontainer/devcontainer.json | 4 + samples/inputs/button-group/layout/README.md | 56 +++++++++++++ samples/inputs/button-group/layout/index.html | 11 +++ .../inputs/button-group/layout/package.json | 12 +++ .../button-group/layout/sandbox.config.json | 5 ++ .../layout/src/ButtonGroupLayout.css | 19 +++++ .../inputs/button-group/layout/src/index.css | 11 +++ .../inputs/button-group/layout/src/index.tsx | 51 ++++++++++++ .../inputs/button-group/layout/tsconfig.json | 4 + .../inputs/button-group/layout/vite.config.js | 8 ++ .../overview/src/ButtonGroupOverview.css | 35 +++++++- .../button-group/overview/src/index.tsx | 79 ++++++++++--------- .../selection/src/ButtonGroupSelection.css | 30 +++++-- .../button-group/selection/src/index.tsx | 62 +++++---------- .../button-group/size/src/ButtonGroupSize.css | 33 ++++++++ .../inputs/button-group/size/src/index.tsx | 54 ++++++------- .../states/.devcontainer/devcontainer.json | 4 + .../inputs/button-group/states/.eslintrc.js | 75 ++++++++++++++++++ samples/inputs/button-group/states/README.md | 56 +++++++++++++ samples/inputs/button-group/states/index.html | 11 +++ .../inputs/button-group/states/package.json | 42 ++++++++++ .../button-group/states/sandbox.config.json | 5 ++ .../src/ButtonGroupInteractionStates.css | 37 +++++++++ .../inputs/button-group/states/src/index.css | 2 + .../inputs/button-group/states/src/index.tsx | 46 +++++++++++ .../inputs/button-group/states/tsconfig.json | 44 +++++++++++ .../inputs/button-group/states/vite.config.js | 12 +++ .../styling/src/ButtonGroupStyling.css | 37 +++++---- .../inputs/button-group/styling/src/index.tsx | 44 +++++------ .../.devcontainer/devcontainer.json | 4 + .../tailwind-styling/.eslintrc.js | 75 ++++++++++++++++++ .../button-group/tailwind-styling/README.md | 56 +++++++++++++ .../button-group/tailwind-styling/index.html | 11 +++ .../tailwind-styling/package.json | 44 +++++++++++ .../tailwind-styling/sandbox.config.json | 5 ++ .../tailwind-styling/src/index.css | 37 +++++++++ .../tailwind-styling/src/index.tsx | 30 +++++++ .../tailwind-styling/tsconfig.json | 44 +++++++++++ .../tailwind-styling/vite.config.js | 13 +++ 69 files changed, 1675 insertions(+), 198 deletions(-) create mode 100644 samples/inputs/button-group/custom-toggle/.devcontainer/devcontainer.json create mode 100644 samples/inputs/button-group/custom-toggle/README.md create mode 100644 samples/inputs/button-group/custom-toggle/index.html create mode 100644 samples/inputs/button-group/custom-toggle/package.json create mode 100644 samples/inputs/button-group/custom-toggle/sandbox.config.json create mode 100644 samples/inputs/button-group/custom-toggle/src/index.css create mode 100644 samples/inputs/button-group/custom-toggle/src/index.tsx create mode 100644 samples/inputs/button-group/custom-toggle/tsconfig.json create mode 100644 samples/inputs/button-group/custom-toggle/vite.config.js create mode 100644 samples/inputs/button-group/interaction-states/.devcontainer/devcontainer.json create mode 100644 samples/inputs/button-group/interaction-states/.eslintrc.js create mode 100644 samples/inputs/button-group/interaction-states/README.md create mode 100644 samples/inputs/button-group/interaction-states/index.html create mode 100644 samples/inputs/button-group/interaction-states/package.json create mode 100644 samples/inputs/button-group/interaction-states/sandbox.config.json create mode 100644 samples/inputs/button-group/interaction-states/src/ButtonGroupStates.css create mode 100644 samples/inputs/button-group/interaction-states/src/index.css create mode 100644 samples/inputs/button-group/interaction-states/src/index.tsx create mode 100644 samples/inputs/button-group/interaction-states/tsconfig.json create mode 100644 samples/inputs/button-group/interaction-states/vite.config.js create mode 100644 samples/inputs/button-group/layout/.devcontainer/devcontainer.json create mode 100644 samples/inputs/button-group/layout/README.md create mode 100644 samples/inputs/button-group/layout/index.html create mode 100644 samples/inputs/button-group/layout/package.json create mode 100644 samples/inputs/button-group/layout/sandbox.config.json create mode 100644 samples/inputs/button-group/layout/src/ButtonGroupLayout.css create mode 100644 samples/inputs/button-group/layout/src/index.css create mode 100644 samples/inputs/button-group/layout/src/index.tsx create mode 100644 samples/inputs/button-group/layout/tsconfig.json create mode 100644 samples/inputs/button-group/layout/vite.config.js create mode 100644 samples/inputs/button-group/size/src/ButtonGroupSize.css create mode 100644 samples/inputs/button-group/states/.devcontainer/devcontainer.json create mode 100644 samples/inputs/button-group/states/.eslintrc.js create mode 100644 samples/inputs/button-group/states/README.md create mode 100644 samples/inputs/button-group/states/index.html create mode 100644 samples/inputs/button-group/states/package.json create mode 100644 samples/inputs/button-group/states/sandbox.config.json create mode 100644 samples/inputs/button-group/states/src/ButtonGroupInteractionStates.css create mode 100644 samples/inputs/button-group/states/src/index.css create mode 100644 samples/inputs/button-group/states/src/index.tsx create mode 100644 samples/inputs/button-group/states/tsconfig.json create mode 100644 samples/inputs/button-group/states/vite.config.js create mode 100644 samples/inputs/button-group/tailwind-styling/.devcontainer/devcontainer.json create mode 100644 samples/inputs/button-group/tailwind-styling/.eslintrc.js create mode 100644 samples/inputs/button-group/tailwind-styling/README.md create mode 100644 samples/inputs/button-group/tailwind-styling/index.html create mode 100644 samples/inputs/button-group/tailwind-styling/package.json create mode 100644 samples/inputs/button-group/tailwind-styling/sandbox.config.json create mode 100644 samples/inputs/button-group/tailwind-styling/src/index.css create mode 100644 samples/inputs/button-group/tailwind-styling/src/index.tsx create mode 100644 samples/inputs/button-group/tailwind-styling/tsconfig.json create mode 100644 samples/inputs/button-group/tailwind-styling/vite.config.js diff --git a/browser/public/meta.json b/browser/public/meta.json index 878e6465e4..b57b1e34c3 100644 --- a/browser/public/meta.json +++ b/browser/public/meta.json @@ -1 +1 @@ -{"version":"23.2.915","date":"2026-08-05 23:55:42","note":"this file is auto-generated"} +{"version":"23.2.915","date":"2026-08-20 10:35:10","note":"this file is auto-generated"} \ No newline at end of file diff --git a/browser/src/navigation/SamplesBrowser.json b/browser/src/navigation/SamplesBrowser.json index 878e6465e4..b57b1e34c3 100644 --- a/browser/src/navigation/SamplesBrowser.json +++ b/browser/src/navigation/SamplesBrowser.json @@ -1 +1 @@ -{"version":"23.2.915","date":"2026-08-05 23:55:42","note":"this file is auto-generated"} +{"version":"23.2.915","date":"2026-08-20 10:35:10","note":"this file is auto-generated"} \ No newline at end of file diff --git a/samples/inputs/badge/icon/src/index.css b/samples/inputs/badge/icon/src/index.css index 7996181645..274be2aa0e 100644 --- a/samples/inputs/badge/icon/src/index.css +++ b/samples/inputs/badge/icon/src/index.css @@ -71,8 +71,13 @@ igc-badge igc-icon { } .badge-icon-item span { - color: var(--ig-gray-700); - font-size: 12px; + color: #556c86; + font-family: "Aktiv Grotesk", sans-serif; + font-size: 13px; + font-weight: 400; + font-style: normal; + line-height: 20px; + letter-spacing: 0.3px; transform: translateY(4px); } diff --git a/samples/inputs/badge/outlined/src/index.css b/samples/inputs/badge/outlined/src/index.css index 20a8a4688a..708e928a08 100644 --- a/samples/inputs/badge/outlined/src/index.css +++ b/samples/inputs/badge/outlined/src/index.css @@ -134,6 +134,11 @@ igc-badge igc-icon { } .step-label { - color: var(--ig-gray-700); + color: #556c86; + font-family: "Aktiv Grotesk", sans-serif; font-size: 13px; + font-weight: 400; + font-style: normal; + line-height: 20px; + letter-spacing: 0.3px; } diff --git a/samples/inputs/badge/shape/src/index.css b/samples/inputs/badge/shape/src/index.css index cf9906aea1..4d24943e5a 100644 --- a/samples/inputs/badge/shape/src/index.css +++ b/samples/inputs/badge/shape/src/index.css @@ -20,8 +20,13 @@ .row-label { justify-self: end; - color: var(--ig-gray-700); - font-size: 14px; + color: #556c86; + font-family: "Aktiv Grotesk", sans-serif; + font-size: 13px; + font-weight: 400; + font-style: normal; + line-height: 20px; + letter-spacing: 0.3px; } .badge-small { diff --git a/samples/inputs/badge/size/src/index.css b/samples/inputs/badge/size/src/index.css index 4b15b3dd4b..2806b0cd4e 100644 --- a/samples/inputs/badge/size/src/index.css +++ b/samples/inputs/badge/size/src/index.css @@ -21,8 +21,13 @@ .row-label { justify-self: end; - color: var(--ig-gray-700); - font-size: 14px; + color: #556c86; + font-family: "Aktiv Grotesk", sans-serif; + font-size: 13px; + font-weight: 400; + font-style: normal; + line-height: 20px; + letter-spacing: 0.3px; } .badge-info-blue { diff --git a/samples/inputs/badge/type/src/index.css b/samples/inputs/badge/type/src/index.css index 521f3f4dcc..fa38411058 100644 --- a/samples/inputs/badge/type/src/index.css +++ b/samples/inputs/badge/type/src/index.css @@ -51,7 +51,11 @@ igc-badge { } .badge-type-item span { - color: var(--ig-gray-700); - font-size: 12px; - line-height: 16px; + color: #556c86; + font-family: "Aktiv Grotesk", sans-serif; + font-size: 13px; + font-weight: 400; + font-style: normal; + line-height: 20px; + letter-spacing: 0.3px; } diff --git a/samples/inputs/badge/variants/src/index.css b/samples/inputs/badge/variants/src/index.css index f983e17588..96358179e2 100644 --- a/samples/inputs/badge/variants/src/index.css +++ b/samples/inputs/badge/variants/src/index.css @@ -36,8 +36,13 @@ igc-avatar { } .variant-item span { - color: var(--ig-gray-700); + color: #556c86; + font-family: "Aktiv Grotesk", sans-serif; font-size: 13px; + font-weight: 400; + font-style: normal; + line-height: 20px; + letter-spacing: 0.3px; } .avatar-wrapper { diff --git a/samples/inputs/button-group/alignment/src/ButtonGroupAlignment.css b/samples/inputs/button-group/alignment/src/ButtonGroupAlignment.css index cd5bbb1bef..3ba295daf3 100644 --- a/samples/inputs/button-group/alignment/src/ButtonGroupAlignment.css +++ b/samples/inputs/button-group/alignment/src/ButtonGroupAlignment.css @@ -1,7 +1,39 @@ -igc-button-group { - width: 200px; -} - igc-ripple { --color: gray; +} + +.button-group-alignment { + display: flex; + align-items: flex-start; + justify-content: center; + gap: 60px; + padding: 24px; +} + +.button-group-alignment-item { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + gap: 16px; +} + +.button-group-alignment-item igc-button-group { + width: 240px; +} + +.button-group-alignment-item:first-child igc-button-group { + width: 320px; +} + +.button-group-alignment-item span { + width: 100%; + text-align: center; + color: #556c86; + font-family: "Aktiv Grotesk", sans-serif; + font-size: 13px; + font-weight: 400; + font-style: normal; + line-height: 20px; + letter-spacing: 0.3px; } \ No newline at end of file diff --git a/samples/inputs/button-group/alignment/src/index.tsx b/samples/inputs/button-group/alignment/src/index.tsx index eca7498af0..aa28f9252e 100644 --- a/samples/inputs/button-group/alignment/src/index.tsx +++ b/samples/inputs/button-group/alignment/src/index.tsx @@ -1,40 +1,37 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import { - IgrButtonGroup, - IgrRipple, - IgrToggleButton, - } from 'igniteui-react'; +import { IgrButtonGroup, IgrRipple, IgrToggleButton } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/material.css'; import './ButtonGroupAlignment.css'; import './index.css'; +const cities = ['Sofia', 'London', 'New York']; -export default function ButtonGroupAlignment() { +const alignments: Array<'horizontal' | 'vertical'> = ['horizontal', 'vertical']; + +export default function ButtonGroupAlignment(): JSX.Element { return ( -
- - - Sofia - - - - London - - - - New York - - - - Tokyo - - - -
+
+ {alignments.map((alignment) => ( +
+ {alignment.charAt(0).toUpperCase() + alignment.slice(1)} + + {cities.map((city) => ( + + {city} + + + ))} + +
+ ))} +
); } // rendering above class to the React DOM const root = ReactDOM.createRoot(document.getElementById('root')); -root.render(); +root.render(); diff --git a/samples/inputs/button-group/custom-toggle/.devcontainer/devcontainer.json b/samples/inputs/button-group/custom-toggle/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..ff434ecd44 --- /dev/null +++ b/samples/inputs/button-group/custom-toggle/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} diff --git a/samples/inputs/button-group/custom-toggle/README.md b/samples/inputs/button-group/custom-toggle/README.md new file mode 100644 index 0000000000..1c208de31c --- /dev/null +++ b/samples/inputs/button-group/custom-toggle/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Custom Toggle feature using [Button Group](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/button-group/custom-toggle +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/button-group/custom-toggle/index.html b/samples/inputs/button-group/custom-toggle/index.html new file mode 100644 index 0000000000..463d25df58 --- /dev/null +++ b/samples/inputs/button-group/custom-toggle/index.html @@ -0,0 +1,11 @@ + + + + ButtonGroupCustomToggle + + + +
+ + + diff --git a/samples/inputs/button-group/custom-toggle/package.json b/samples/inputs/button-group/custom-toggle/package.json new file mode 100644 index 0000000000..4e7c8b93f5 --- /dev/null +++ b/samples/inputs/button-group/custom-toggle/package.json @@ -0,0 +1,12 @@ +{ + "name": "react-button-group-custom-toggle", + "description": "This project provides example of Button Group Custom Toggle using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { "start": "vite --port 4200", "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", "preview": "vite preview", "test": "vitest" }, + "dependencies": { "igniteui-dockmanager": "^1.17.0", "igniteui-react": "19.7.0", "igniteui-react-core": "19.6.0", "igniteui-webcomponents": "^7.2.1", "react": "^19.2.0", "react-dom": "^19.2.0", "tslib": "^2.4.0" }, + "devDependencies": { "@types/jest": "^29.2.0", "@types/node": "^24.7.1", "@types/react": "^18.0.24", "@types/react-dom": "^18.0.8", "@vitejs/plugin-react": "^5.0.4", "@vitest/browser": "^3.2.4", "typescript": "^4.8.4", "vite": "^7.1.9", "vitest": "^3.2.4", "vitest-canvas-mock": "^0.3.3", "worker-loader": "^3.0.8" }, + "browserslist": [">0.2%", "not dead", "not ie <= 11", "not op_mini all"] +} diff --git a/samples/inputs/button-group/custom-toggle/sandbox.config.json b/samples/inputs/button-group/custom-toggle/sandbox.config.json new file mode 100644 index 0000000000..49a80d1d8b --- /dev/null +++ b/samples/inputs/button-group/custom-toggle/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} diff --git a/samples/inputs/button-group/custom-toggle/src/index.css b/samples/inputs/button-group/custom-toggle/src/index.css new file mode 100644 index 0000000000..06a54b66a2 --- /dev/null +++ b/samples/inputs/button-group/custom-toggle/src/index.css @@ -0,0 +1,13 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-button-group { + display: inline-block; + width: 300px; +} + +.container.sample { + display: flex; + justify-content: center; + align-items: center; +} diff --git a/samples/inputs/button-group/custom-toggle/src/index.tsx b/samples/inputs/button-group/custom-toggle/src/index.tsx new file mode 100644 index 0000000000..fe93f01e7f --- /dev/null +++ b/samples/inputs/button-group/custom-toggle/src/index.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import { + IgrButtonGroup, + IgrIcon, + IgrToggleButton, + registerIconFromText, +} from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/material.css'; +import './index.css'; + +const icons = [ + ['border_top', ''], + ['border_right', ''], + ['border_bottom', ''], + ['border_left', ''], +]; + +icons.forEach(([name, text]) => registerIconFromText(name, text, 'material')); + +export default function ButtonGroupCustomToggle() { + return ( +
+ + + + + + +
+ ); +} + +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/button-group/custom-toggle/tsconfig.json b/samples/inputs/button-group/custom-toggle/tsconfig.json new file mode 100644 index 0000000000..b6c88bff68 --- /dev/null +++ b/samples/inputs/button-group/custom-toggle/tsconfig.json @@ -0,0 +1,4 @@ +{ + "compilerOptions": { "resolveJsonModule": true, "esModuleInterop": true, "baseUrl": ".", "outDir": "build/dist", "module": "esnext", "target": "es5", "lib": ["es6", "dom"], "sourceMap": true, "allowJs": true, "jsx": "react", "moduleResolution": "node", "rootDir": "src", "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, "noImplicitThis": true, "noImplicitAny": true, "noUnusedLocals": false, "importHelpers": true, "allowSyntheticDefaultImports": true, "skipLibCheck": true, "strict": false, "isolatedModules": true, "noEmit": true }, + "exclude": ["node_modules", "build"], "include": ["src"] +} diff --git a/samples/inputs/button-group/custom-toggle/vite.config.js b/samples/inputs/button-group/custom-toggle/vite.config.js new file mode 100644 index 0000000000..2225220a7e --- /dev/null +++ b/samples/inputs/button-group/custom-toggle/vite.config.js @@ -0,0 +1,3 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +export default defineConfig({ plugins: [react()], build: { outDir: 'build' }, server: { open: false } }); diff --git a/samples/inputs/button-group/interaction-states/.devcontainer/devcontainer.json b/samples/inputs/button-group/interaction-states/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..e0b8e9c925 --- /dev/null +++ b/samples/inputs/button-group/interaction-states/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} \ No newline at end of file diff --git a/samples/inputs/button-group/interaction-states/.eslintrc.js b/samples/inputs/button-group/interaction-states/.eslintrc.js new file mode 100644 index 0000000000..b45160a9ee --- /dev/null +++ b/samples/inputs/button-group/interaction-states/.eslintrc.js @@ -0,0 +1,75 @@ +// https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project +module.exports = { + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: { + jsx: true // Allows for the parsing of JSX + } + }, + settings: { + react: { + version: "999.999.999" // Tells eslint-plugin-react to automatically detect the version of React to use + } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react + "plugin:@typescript-eslint/recommended" // Uses the recommended rules from @typescript-eslint/eslint-plugin + ], + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + }, + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "rules": { + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + } + } + ] + }; \ No newline at end of file diff --git a/samples/inputs/button-group/interaction-states/README.md b/samples/inputs/button-group/interaction-states/README.md new file mode 100644 index 0000000000..7d0259d580 --- /dev/null +++ b/samples/inputs/button-group/interaction-states/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Interaction States feature using [Button Group](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/button-group/interaction-states +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/button-group/interaction-states/index.html b/samples/inputs/button-group/interaction-states/index.html new file mode 100644 index 0000000000..88d23d139e --- /dev/null +++ b/samples/inputs/button-group/interaction-states/index.html @@ -0,0 +1,11 @@ + + + + Button Group States + + + +
+ + + \ No newline at end of file diff --git a/samples/inputs/button-group/interaction-states/package.json b/samples/inputs/button-group/interaction-states/package.json new file mode 100644 index 0000000000..c5fb9bdd3b --- /dev/null +++ b/samples/inputs/button-group/interaction-states/package.json @@ -0,0 +1,42 @@ +{ + "name": "react-button-group-interaction-states", + "description": "This project provides example of Button Group States using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/inputs/button-group/interaction-states/sandbox.config.json b/samples/inputs/button-group/interaction-states/sandbox.config.json new file mode 100644 index 0000000000..00acba0c10 --- /dev/null +++ b/samples/inputs/button-group/interaction-states/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} \ No newline at end of file diff --git a/samples/inputs/button-group/interaction-states/src/ButtonGroupStates.css b/samples/inputs/button-group/interaction-states/src/ButtonGroupStates.css new file mode 100644 index 0000000000..0595d21413 --- /dev/null +++ b/samples/inputs/button-group/interaction-states/src/ButtonGroupStates.css @@ -0,0 +1,76 @@ +igc-ripple { + --color: gray; +} + +.button-group-states { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + gap: 20px; + padding: 20px; +} + +.button-group-states-row { + display: grid; + grid-template-columns: 120px 164px 164px 164px; + align-items: center; + gap: 16px; +} + +.button-group-states .row-label, +.button-group-states .column-label { + color: #556c86; + font-family: "Aktiv Grotesk", sans-serif; + font-size: 13px; + font-weight: 400; + font-style: normal; + line-height: 20px; + letter-spacing: 0.3px; +} + +.button-group-states .column-label { + text-align: center; +} + +.button-group-states igc-button-group { + width: 164px; +} + +.button-group-states igc-toggle-button { + width: 100%; +} + +.button-group-states igc-icon { + font-size: 16px; +} + +.button-group-states igc-toggle-button[selected]::part(toggle) { + background: var(--item-active-background); + border-color: var(--item-active-border-color); + color: var(--item-hover-text-color); +} + +.button-group-states igc-toggle-button.state-hover:not([selected])::part(toggle) { + background: var(--item-hover-background); + border-color: var(--item-hover-border-color); + color: var(--item-hover-text-color); +} + +.button-group-states igc-toggle-button.state-focused:not([selected])::part(toggle) { + background: var(--item-focused-hover-background); + border-color: var(--item-focused-hover-border-color); + color: var(--item-focused-hover-text-color); +} + +.button-group-states igc-toggle-button.state-hover[selected]::part(toggle) { + background: var(--item-selected-active-background); + border-color: var(--item-selected-active-border-color); + color: var(--item-selected-hover-text-color); +} + +.button-group-states igc-toggle-button.state-focused[selected]::part(toggle) { + background: var(--item-selected-active-background); + border-color: var(--item-selected-active-border-color); + color: var(--item-focused-hover-text-color); +} \ No newline at end of file diff --git a/samples/inputs/button-group/interaction-states/src/index.css b/samples/inputs/button-group/interaction-states/src/index.css new file mode 100644 index 0000000000..1f53b8aa05 --- /dev/null +++ b/samples/inputs/button-group/interaction-states/src/index.css @@ -0,0 +1,2 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file diff --git a/samples/inputs/button-group/interaction-states/src/index.tsx b/samples/inputs/button-group/interaction-states/src/index.tsx new file mode 100644 index 0000000000..d039104a6d --- /dev/null +++ b/samples/inputs/button-group/interaction-states/src/index.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import { IgrButtonGroup, IgrIcon, IgrRipple, IgrToggleButton } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/material.css'; +import './ButtonGroupStates.css'; +import './index.css'; + +const rows: Array<{ label: string; selected: boolean }> = [ + { label: 'Selected / Off', selected: false }, + { label: 'Selected / On', selected: true } +]; + +const states = ['idle', 'hover', 'focused']; + +function StateButton({ selected, state }: { selected: boolean; state: string }): JSX.Element { + return ( + + + Button + + + + ); +} + +export default function ButtonGroupStates(): JSX.Element { + return ( +
+
+ + {states.map((state) => ( + + {state.charAt(0).toUpperCase() + state.slice(1)} + + ))} +
+ {rows.map((row) => ( +
+ {row.label} + {states.map((state) => )} +
+ ))} +
+ ); +} + +// rendering above class to the React DOM +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/button-group/interaction-states/tsconfig.json b/samples/inputs/button-group/interaction-states/tsconfig.json new file mode 100644 index 0000000000..e7db8a94f5 --- /dev/null +++ b/samples/inputs/button-group/interaction-states/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "**/odatajs-4.0.0.js", + "config-overrides.js" + ], + "include": [ + "src" + ] +} diff --git a/samples/inputs/button-group/interaction-states/vite.config.js b/samples/inputs/button-group/interaction-states/vite.config.js new file mode 100644 index 0000000000..1744dbc719 --- /dev/null +++ b/samples/inputs/button-group/interaction-states/vite.config.js @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + build: { + outDir: 'build' + }, + server: { + open: false + }, +}); \ No newline at end of file diff --git a/samples/inputs/button-group/layout/.devcontainer/devcontainer.json b/samples/inputs/button-group/layout/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..ff434ecd44 --- /dev/null +++ b/samples/inputs/button-group/layout/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} diff --git a/samples/inputs/button-group/layout/README.md b/samples/inputs/button-group/layout/README.md new file mode 100644 index 0000000000..aec7b45ba3 --- /dev/null +++ b/samples/inputs/button-group/layout/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Layout feature using [Button Group](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/button-group/layout +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/button-group/layout/index.html b/samples/inputs/button-group/layout/index.html new file mode 100644 index 0000000000..13b945c37d --- /dev/null +++ b/samples/inputs/button-group/layout/index.html @@ -0,0 +1,11 @@ + + + + ButtonGroupLayout + + + +
+ + + diff --git a/samples/inputs/button-group/layout/package.json b/samples/inputs/button-group/layout/package.json new file mode 100644 index 0000000000..d752aa858d --- /dev/null +++ b/samples/inputs/button-group/layout/package.json @@ -0,0 +1,12 @@ +{ + "name": "react-button-group-layout", + "description": "This project provides example of Button Group Layout using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { "start": "vite --port 4200", "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", "preview": "vite preview", "test": "vitest" }, + "dependencies": { "igniteui-dockmanager": "^1.17.0", "igniteui-react": "19.7.0", "igniteui-react-core": "19.6.0", "igniteui-webcomponents": "^7.2.1", "react": "^19.2.0", "react-dom": "^19.2.0", "tslib": "^2.4.0" }, + "devDependencies": { "@types/jest": "^29.2.0", "@types/node": "^24.7.1", "@types/react": "^18.0.24", "@types/react-dom": "^18.0.8", "@vitejs/plugin-react": "^5.0.4", "@vitest/browser": "^3.2.4", "typescript": "^4.8.4", "vite": "^7.1.9", "vitest": "^3.2.4", "vitest-canvas-mock": "^0.3.3", "worker-loader": "^3.0.8" }, + "browserslist": [">0.2%", "not dead", "not ie <= 11", "not op_mini all"] +} diff --git a/samples/inputs/button-group/layout/sandbox.config.json b/samples/inputs/button-group/layout/sandbox.config.json new file mode 100644 index 0000000000..49a80d1d8b --- /dev/null +++ b/samples/inputs/button-group/layout/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} diff --git a/samples/inputs/button-group/layout/src/ButtonGroupLayout.css b/samples/inputs/button-group/layout/src/ButtonGroupLayout.css new file mode 100644 index 0000000000..936a3bc2f3 --- /dev/null +++ b/samples/inputs/button-group/layout/src/ButtonGroupLayout.css @@ -0,0 +1,19 @@ +igc-ripple { + --color: gray; +} + +.button-group-layout { + display: flex; + align-items: center; + justify-content: center; + gap: 80px; + min-height: 7rem; +} + +.button-group-layout igc-toggle-button { + min-width: 100px; +} + +.button-group-layout igc-icon { + --size: 20px; +} diff --git a/samples/inputs/button-group/layout/src/index.css b/samples/inputs/button-group/layout/src/index.css new file mode 100644 index 0000000000..e41c7c710b --- /dev/null +++ b/samples/inputs/button-group/layout/src/index.css @@ -0,0 +1,11 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-button-group { + display: inline-block; + max-width: 400px; +} + +igc-ripple { + --color: grey; +} diff --git a/samples/inputs/button-group/layout/src/index.tsx b/samples/inputs/button-group/layout/src/index.tsx new file mode 100644 index 0000000000..3bc28e0a57 --- /dev/null +++ b/samples/inputs/button-group/layout/src/index.tsx @@ -0,0 +1,51 @@ +import React, { useEffect } from 'react'; +import ReactDOM from 'react-dom/client'; +import { IgrButtonGroup, IgrIcon, IgrRipple, IgrToggleButton, registerIconFromText } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/material.css'; +import './ButtonGroupLayout.css'; +import './index.css'; + +const alignLeftIcon = + ''; +const alignCenterIcon = + ''; +const alignRightIcon = + ''; + +const layouts = [ + { value: 'left', label: 'Left', icon: 'align-left' }, + { value: 'center', label: 'Center', icon: 'align-center' }, + { value: 'right', label: 'Right', icon: 'align-right' } +]; + +export default function ButtonGroupLayout(): JSX.Element { + useEffect(() => { + registerIconFromText('align-left', alignLeftIcon, 'material'); + registerIconFromText('align-center', alignCenterIcon, 'material'); + registerIconFromText('align-right', alignRightIcon, 'material'); + }, []); + + return ( +
+ + {layouts.map((layout) => ( + + {layout.label} + + + ))} + + + {layouts.map((layout) => ( + + + + + ))} + +
+ ); +} + +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/button-group/layout/tsconfig.json b/samples/inputs/button-group/layout/tsconfig.json new file mode 100644 index 0000000000..b6c88bff68 --- /dev/null +++ b/samples/inputs/button-group/layout/tsconfig.json @@ -0,0 +1,4 @@ +{ + "compilerOptions": { "resolveJsonModule": true, "esModuleInterop": true, "baseUrl": ".", "outDir": "build/dist", "module": "esnext", "target": "es5", "lib": ["es6", "dom"], "sourceMap": true, "allowJs": true, "jsx": "react", "moduleResolution": "node", "rootDir": "src", "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, "noImplicitThis": true, "noImplicitAny": true, "noUnusedLocals": false, "importHelpers": true, "allowSyntheticDefaultImports": true, "skipLibCheck": true, "strict": false, "isolatedModules": true, "noEmit": true }, + "exclude": ["node_modules", "build"], "include": ["src"] +} diff --git a/samples/inputs/button-group/layout/vite.config.js b/samples/inputs/button-group/layout/vite.config.js new file mode 100644 index 0000000000..342e2b8e11 --- /dev/null +++ b/samples/inputs/button-group/layout/vite.config.js @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + build: { outDir: 'build' }, + server: { open: false }, +}); diff --git a/samples/inputs/button-group/overview/src/ButtonGroupOverview.css b/samples/inputs/button-group/overview/src/ButtonGroupOverview.css index 8ebfaa184d..88a89a0721 100644 --- a/samples/inputs/button-group/overview/src/ButtonGroupOverview.css +++ b/samples/inputs/button-group/overview/src/ButtonGroupOverview.css @@ -1,7 +1,40 @@ + .container.sample { + display: flex; + flex-direction: column; + align-items: center; + padding: 1rem; +} + igc-button-group { - max-width: 400px; + display: block; + width: 280px; + max-width: 100%; } igc-ripple { --color: gray; +} + +.album { + margin-top: 8px; + width: 280px; + max-width: 100%; +} + +.album-title { + display: inline-block; + margin-bottom: 8px; + color: #1f89d4; +} + +.album-photos { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 4px; +} + +.album-photos img { + width: 100%; + object-fit: cover; + display: block; } \ No newline at end of file diff --git a/samples/inputs/button-group/overview/src/index.tsx b/samples/inputs/button-group/overview/src/index.tsx index a7ceedc44a..923e753db6 100644 --- a/samples/inputs/button-group/overview/src/index.tsx +++ b/samples/inputs/button-group/overview/src/index.tsx @@ -1,63 +1,68 @@ -import React, { useEffect } from 'react'; +import React, { useState } from 'react'; import ReactDOM from 'react-dom/client'; import { IgrButtonGroup, - IgrIcon, IgrRipple, IgrToggleButton, - registerIconFromText, } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/material.css'; import './ButtonGroupOverview.css'; import './index.css'; -const icons = [ - { - name: 'format_align_left', - iconText: '', +const albums = { + device: { + title: 'Trip around the world', + photos: [ + 'https://picsum.photos/id/1015/300/220', + 'https://picsum.photos/id/1016/300/220', + 'https://picsum.photos/id/1018/300/220', + 'https://picsum.photos/id/1019/300/220', + ], }, - { - name: 'format_align_center', - iconText: '', + cloud: { + title: 'Trip around the world', + photos: [ + 'https://picsum.photos/id/1036/300/220', + 'https://picsum.photos/id/1051/300/220', + 'https://picsum.photos/id/1062/300/220', + 'https://picsum.photos/id/1067/300/220', + ], }, - { - name: 'format_align_right', - iconText: '', - }, - { - name: 'format_align_justify', - iconText: '', - }, -]; +}; export default function ButtonGroupOverview() { - useEffect(() => { - icons.forEach((icon) => { - registerIconFromText(icon.name, icon.iconText, 'material'); - }); - }, []) + const [source, setSource] = useState<'device' | 'cloud'>('cloud'); + const album = albums[source]; return (
- - - - - - - + ) => { + if (e.detail === 'device' || e.detail === 'cloud') { + setSource(e.detail); + } + }} + > + + Device - - + + Cloud - - - - + +
+ {album.title} +
+ {album.photos.map((photo) => ( + {album.title} + ))} +
+
); } diff --git a/samples/inputs/button-group/selection/src/ButtonGroupSelection.css b/samples/inputs/button-group/selection/src/ButtonGroupSelection.css index db9096307b..6d0a1eb8a7 100644 --- a/samples/inputs/button-group/selection/src/ButtonGroupSelection.css +++ b/samples/inputs/button-group/selection/src/ButtonGroupSelection.css @@ -1,13 +1,31 @@ -.radio-group-container { - width: 400px; - margin-bottom: 1rem; +.selection-samples { + display: flex; + justify-content: center; + flex-direction: column; + align-items: flex-start; + gap: 32px; + padding-left: 32px; } -igc-radio-group { - padding: 0.5rem; +.selection-sample { + display: flex; + align-items: center; + gap: 30px; } -igc-button-group { +.selection-sample > span { + width: 120px; + text-align: right; + color: #556c86; + font-family: "Aktiv Grotesk", sans-serif; + font-size: 13px; + font-weight: 400; + font-style: normal; + line-height: 20px; + letter-spacing: 0.3px; +} + +.selection-sample igc-button-group { width: 200px; } diff --git a/samples/inputs/button-group/selection/src/index.tsx b/samples/inputs/button-group/selection/src/index.tsx index e27e89e466..684c40b64c 100644 --- a/samples/inputs/button-group/selection/src/index.tsx +++ b/samples/inputs/button-group/selection/src/index.tsx @@ -1,12 +1,8 @@ -import React, { useEffect, useRef } from 'react'; +import React, { useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import { - ButtonGroupSelection, IgrButtonGroup, IgrIcon, - IgrRadio, - IgrRadioChangeEventArgs, - IgrRadioGroup, IgrRipple, IgrToggleButton, registerIconFromText, @@ -37,43 +33,27 @@ export default function ButtonGroupSelectionSample() { }); }, []) - const buttonGroupRef = useRef(null); - - function onRadioChange(e: IgrRadioChangeEventArgs) { - const value = e.detail.value as ButtonGroupSelection; - buttonGroupRef.current.selection = value; - } - return ( -
-
- - - - Single - - - Single-Required - - - Multiple - - -
- - - - - - - - - - - - - - +
+ {(['single', 'single-required', 'multiple'] as const).map((selection) => ( +
+ {selection === 'single-required' ? 'Single-Required' : selection.charAt(0).toUpperCase() + selection.slice(1)} + + + + + + + + + + + + + + +
+ ))}
); } diff --git a/samples/inputs/button-group/size/src/ButtonGroupSize.css b/samples/inputs/button-group/size/src/ButtonGroupSize.css new file mode 100644 index 0000000000..5a83e77d14 --- /dev/null +++ b/samples/inputs/button-group/size/src/ButtonGroupSize.css @@ -0,0 +1,33 @@ +igc-ripple { + --color: gray; +} + +.button-group-size { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: center; + gap: 32px; + padding: 13px; + padding-left: 3rem; +} + +.button-group-size-item { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + gap: 32px; +} + +.button-group-size-item span { + width: 52px; + text-align: right; + color: #556c86; + font-family: "Aktiv Grotesk", sans-serif; + font-size: 13px; + font-weight: 400; + font-style: normal; + line-height: 20px; + letter-spacing: 0.3px; +} diff --git a/samples/inputs/button-group/size/src/index.tsx b/samples/inputs/button-group/size/src/index.tsx index 06cbe8b3de..28ce3d496c 100644 --- a/samples/inputs/button-group/size/src/index.tsx +++ b/samples/inputs/button-group/size/src/index.tsx @@ -1,39 +1,39 @@ -import React, { useState } from 'react'; +import React from 'react'; import ReactDOM from 'react-dom/client'; -import { - IgrButtonGroup, - IgrComponentValueChangedEventArgs, - IgrToggleButton, - } from 'igniteui-react'; +import { IgrButtonGroup, IgrRipple, IgrToggleButton } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/material.css'; +import './ButtonGroupSize.css'; import './index.css'; -export default function ButtonGroupSize() { - const [style, setStyle] = useState({ '--ig-size': 'var(--ig-size-large)' } as React.CSSProperties) +const cities = ['Sofia', 'London', 'New York']; - function onSelect(args: IgrComponentValueChangedEventArgs) { - setStyle({ - '--ig-size': `var(--ig-size-${args.detail})` - } as React.CSSProperties) - } +const sizes = ['small', 'medium', 'large']; +export default function ButtonGroupSize(): JSX.Element { return ( -
- - - Small - - - Medium - - - Large - - -
+
+ {sizes.map((size) => ( +
+ {size.charAt(0).toUpperCase() + size.slice(1)} + + {cities.map((city) => ( + + {city} + + + ))} + +
+ ))} +
); } // rendering above class to the React DOM const root = ReactDOM.createRoot(document.getElementById('root')); -root.render(); +root.render(); diff --git a/samples/inputs/button-group/states/.devcontainer/devcontainer.json b/samples/inputs/button-group/states/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..e0b8e9c925 --- /dev/null +++ b/samples/inputs/button-group/states/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} \ No newline at end of file diff --git a/samples/inputs/button-group/states/.eslintrc.js b/samples/inputs/button-group/states/.eslintrc.js new file mode 100644 index 0000000000..b45160a9ee --- /dev/null +++ b/samples/inputs/button-group/states/.eslintrc.js @@ -0,0 +1,75 @@ +// https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project +module.exports = { + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: { + jsx: true // Allows for the parsing of JSX + } + }, + settings: { + react: { + version: "999.999.999" // Tells eslint-plugin-react to automatically detect the version of React to use + } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react + "plugin:@typescript-eslint/recommended" // Uses the recommended rules from @typescript-eslint/eslint-plugin + ], + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + }, + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "rules": { + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + } + } + ] + }; \ No newline at end of file diff --git a/samples/inputs/button-group/states/README.md b/samples/inputs/button-group/states/README.md new file mode 100644 index 0000000000..9c6295d419 --- /dev/null +++ b/samples/inputs/button-group/states/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of States feature using [Button Group](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/button-group/states +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/button-group/states/index.html b/samples/inputs/button-group/states/index.html new file mode 100644 index 0000000000..0ce785b95d --- /dev/null +++ b/samples/inputs/button-group/states/index.html @@ -0,0 +1,11 @@ + + + + Button Group Interaction States + + + +
+ + + \ No newline at end of file diff --git a/samples/inputs/button-group/states/package.json b/samples/inputs/button-group/states/package.json new file mode 100644 index 0000000000..003410711d --- /dev/null +++ b/samples/inputs/button-group/states/package.json @@ -0,0 +1,42 @@ +{ + "name": "react-button-group-states", + "description": "This project provides example of Button Group Interaction States using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/inputs/button-group/states/sandbox.config.json b/samples/inputs/button-group/states/sandbox.config.json new file mode 100644 index 0000000000..00acba0c10 --- /dev/null +++ b/samples/inputs/button-group/states/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} \ No newline at end of file diff --git a/samples/inputs/button-group/states/src/ButtonGroupInteractionStates.css b/samples/inputs/button-group/states/src/ButtonGroupInteractionStates.css new file mode 100644 index 0000000000..b64aef2ce9 --- /dev/null +++ b/samples/inputs/button-group/states/src/ButtonGroupInteractionStates.css @@ -0,0 +1,37 @@ +igc-ripple { + --color: gray; +} + +.button-group-interaction-states { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + gap: 20px; + padding: 20px; +} + +.button-group-interaction-states-row { + display: grid; + grid-template-columns: 120px 160px 160px; + align-items: center; + gap: 16px; +} + +.button-group-interaction-states .row-label, +.button-group-interaction-states .column-label { + color: #556c86; + font-family: "Aktiv Grotesk", sans-serif; + font-size: 13px; + font-weight: 400; + font-style: normal; + line-height: 20px; + letter-spacing: 0.3px; + text-align: center; +} + +.button-group-interaction-states-row igc-button-group:not([disabled]) igc-toggle-button[selected]::part(toggle) { + background: var(--item-active-background); + border-color: var(--item-active-border-color); + color: var(--item-selected-text-color); +} \ No newline at end of file diff --git a/samples/inputs/button-group/states/src/index.css b/samples/inputs/button-group/states/src/index.css new file mode 100644 index 0000000000..1f53b8aa05 --- /dev/null +++ b/samples/inputs/button-group/states/src/index.css @@ -0,0 +1,2 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ \ No newline at end of file diff --git a/samples/inputs/button-group/states/src/index.tsx b/samples/inputs/button-group/states/src/index.tsx new file mode 100644 index 0000000000..77e39628a2 --- /dev/null +++ b/samples/inputs/button-group/states/src/index.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import { IgrButtonGroup, IgrRipple, IgrToggleButton } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/material.css'; +import './ButtonGroupInteractionStates.css'; +import './index.css'; + +const rows: Array<{ label: string; selected: boolean }> = [ + { label: 'Selected / Off', selected: false }, + { label: 'Selected / On', selected: true } +]; + +export default function ButtonGroupInteractionStates(): JSX.Element { + return ( +
+
+ + Enabled + Disabled +
+ {rows.map((row) => ( +
+ {row.label} + + + Device + + + + + + Cloud + + +
+ ))} +
+ ); +} + +// rendering above class to the React DOM +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/button-group/states/tsconfig.json b/samples/inputs/button-group/states/tsconfig.json new file mode 100644 index 0000000000..e7db8a94f5 --- /dev/null +++ b/samples/inputs/button-group/states/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "**/odatajs-4.0.0.js", + "config-overrides.js" + ], + "include": [ + "src" + ] +} diff --git a/samples/inputs/button-group/states/vite.config.js b/samples/inputs/button-group/states/vite.config.js new file mode 100644 index 0000000000..1744dbc719 --- /dev/null +++ b/samples/inputs/button-group/states/vite.config.js @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + build: { + outDir: 'build' + }, + server: { + open: false + }, +}); \ No newline at end of file diff --git a/samples/inputs/button-group/styling/src/ButtonGroupStyling.css b/samples/inputs/button-group/styling/src/ButtonGroupStyling.css index fc5cd8712a..22c9d20f42 100644 --- a/samples/inputs/button-group/styling/src/ButtonGroupStyling.css +++ b/samples/inputs/button-group/styling/src/ButtonGroupStyling.css @@ -1,27 +1,32 @@ -igc-button-group { - width: 200px; -} - igc-ripple { --color: gray; } -igc-toggle-button::part(toggle) { - color: #fdfdfd; - background: #2f4d6a; +.button-group-styling { + display: flex; + align-items: center; + justify-content: center; + min-height: 7rem; +} + +.button-group-styling igc-button-group { + width: 420px; + border: 2px solid #4da3e8; + border-radius: 4px; + overflow: hidden; } -igc-toggle-button::part(toggle):hover { - color: #fdfdfd; - background: #1f3347; +.button-group-styling igc-toggle-button::part(toggle) { + color: #4a5a66; + background: #cfe8fb; + border-color: #4da3e8; } -igc-toggle-button[disabled]::part(toggle) { - color: gray; - background: lightgray; +.button-group-styling igc-toggle-button::part(toggle):hover { + background: #b3daf8; } -igc-toggle-button[selected]::part(toggle) { - color: #fdfdfd; - background: #1f3347; +.button-group-styling igc-toggle-button[selected]::part(toggle) { + color: #2f4d6a; + background: #6db3ea; } \ No newline at end of file diff --git a/samples/inputs/button-group/styling/src/index.tsx b/samples/inputs/button-group/styling/src/index.tsx index 0bf8d1f292..61f3d984f9 100644 --- a/samples/inputs/button-group/styling/src/index.tsx +++ b/samples/inputs/button-group/styling/src/index.tsx @@ -1,39 +1,31 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import { - IgrButtonGroup, - IgrRipple, - IgrToggleButton, - } from 'igniteui-react'; +import { IgrButtonGroup, IgrRipple, IgrToggleButton } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/material.css'; import './ButtonGroupStyling.css'; import './index.css'; -export default function ButtonGroupStyling() { +const layouts = ['Left', 'Center', 'Right']; + +export default function ButtonGroupStyling(): JSX.Element { return ( -
- - - Sofia - - - - London - - - - New York - - - - Tokyo - - +
+ + {layouts.map((layout) => ( + + {layout} + + + ))} -
+
); } // rendering above class to the React DOM const root = ReactDOM.createRoot(document.getElementById('root')); -root.render(); +root.render(); diff --git a/samples/inputs/button-group/tailwind-styling/.devcontainer/devcontainer.json b/samples/inputs/button-group/tailwind-styling/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..e0b8e9c925 --- /dev/null +++ b/samples/inputs/button-group/tailwind-styling/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} \ No newline at end of file diff --git a/samples/inputs/button-group/tailwind-styling/.eslintrc.js b/samples/inputs/button-group/tailwind-styling/.eslintrc.js new file mode 100644 index 0000000000..b45160a9ee --- /dev/null +++ b/samples/inputs/button-group/tailwind-styling/.eslintrc.js @@ -0,0 +1,75 @@ +// https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project +module.exports = { + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: { + jsx: true // Allows for the parsing of JSX + } + }, + settings: { + react: { + version: "999.999.999" // Tells eslint-plugin-react to automatically detect the version of React to use + } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react + "plugin:@typescript-eslint/recommended" // Uses the recommended rules from @typescript-eslint/eslint-plugin + ], + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + }, + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "rules": { + "default-case": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-extend-native": "off", + "no-throw-literal": "off", + "no-useless-concat": "off", + "no-mixed-operators": "off", + "no-prototype-builtins": "off", + "prefer-const": "off", + "prefer-rest-params": "off", + "jsx-a11y/alt-text": "off", + "jsx-a11y/iframe-has-title": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + } + } + ] + }; \ No newline at end of file diff --git a/samples/inputs/button-group/tailwind-styling/README.md b/samples/inputs/button-group/tailwind-styling/README.md new file mode 100644 index 0000000000..2a5d2b0210 --- /dev/null +++ b/samples/inputs/button-group/tailwind-styling/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Tailwind Styling feature using [Button Group](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/inputs/button-group/tailwind-styling +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/inputs/button-group/tailwind-styling/index.html b/samples/inputs/button-group/tailwind-styling/index.html new file mode 100644 index 0000000000..6c5b289faa --- /dev/null +++ b/samples/inputs/button-group/tailwind-styling/index.html @@ -0,0 +1,11 @@ + + + + ButtonGroupTailwindStyling + + + +
+ + + diff --git a/samples/inputs/button-group/tailwind-styling/package.json b/samples/inputs/button-group/tailwind-styling/package.json new file mode 100644 index 0000000000..29a89fe1ae --- /dev/null +++ b/samples/inputs/button-group/tailwind-styling/package.json @@ -0,0 +1,44 @@ +{ + "name": "react-button-group-tailwind-styling", + "description": "This project provides example of Button Group Tailwind Styling using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.1.14", + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "tailwindcss": "^4.1.14", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/inputs/button-group/tailwind-styling/sandbox.config.json b/samples/inputs/button-group/tailwind-styling/sandbox.config.json new file mode 100644 index 0000000000..00acba0c10 --- /dev/null +++ b/samples/inputs/button-group/tailwind-styling/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} \ No newline at end of file diff --git a/samples/inputs/button-group/tailwind-styling/src/index.css b/samples/inputs/button-group/tailwind-styling/src/index.css new file mode 100644 index 0000000000..6ff2900474 --- /dev/null +++ b/samples/inputs/button-group/tailwind-styling/src/index.css @@ -0,0 +1,37 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +@layer theme, base, components, utilities; +@import "tailwindcss/theme.css" layer(theme); +@import "tailwindcss/utilities.css" layer(utilities); + +igc-ripple { + --color: gray; +} + +.button-group-center { + display: flex; + align-items: center; + justify-content: center; + min-height: 7rem; +} + +.button-group-style { + width: 420px; + max-width: 100%; +} + +.button-group-style igc-toggle-button::part(toggle) { + color: var(--color-violet-700); + background: var(--color-white); + border-color: var(--color-violet-300); +} + +.button-group-style igc-toggle-button::part(toggle):hover { + background: var(--color-fuchsia-100); +} + +.button-group-style igc-toggle-button[selected]::part(toggle) { + color: var(--color-white); + background: var(--color-violet-600); +} diff --git a/samples/inputs/button-group/tailwind-styling/src/index.tsx b/samples/inputs/button-group/tailwind-styling/src/index.tsx new file mode 100644 index 0000000000..3f4363a7c7 --- /dev/null +++ b/samples/inputs/button-group/tailwind-styling/src/index.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import { IgrButtonGroup, IgrRipple, IgrToggleButton } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/material.css'; + +const views = ['Day', 'Week', 'Month']; + +export default function ButtonGroupTailwindStyling(): JSX.Element { + return ( +
+ + {views.map((view) => ( + + {view} + + + ))} + +
+ ); +} + +// rendering above class to the React DOM +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/inputs/button-group/tailwind-styling/tsconfig.json b/samples/inputs/button-group/tailwind-styling/tsconfig.json new file mode 100644 index 0000000000..e7db8a94f5 --- /dev/null +++ b/samples/inputs/button-group/tailwind-styling/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "**/odatajs-4.0.0.js", + "config-overrides.js" + ], + "include": [ + "src" + ] +} diff --git a/samples/inputs/button-group/tailwind-styling/vite.config.js b/samples/inputs/button-group/tailwind-styling/vite.config.js new file mode 100644 index 0000000000..663868e022 --- /dev/null +++ b/samples/inputs/button-group/tailwind-styling/vite.config.js @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import tailwindcss from '@tailwindcss/vite'; + +export default defineConfig({ + plugins: [react(), tailwindcss()], + build: { + outDir: 'build' + }, + server: { + open: false + }, +}); \ No newline at end of file From 536860b16c61b152f61745c5120f45b63282233f Mon Sep 17 00:00:00 2001 From: Ivan Minchev <61944284+IMinchev64@users.noreply.github.com> Date: Thu, 27 Aug 2026 10:12:12 +0300 Subject: [PATCH 21/23] feat(avatar): update styling (#1099) --- samples/layouts/avatar/overview/src/index.css | 44 ++++------ samples/layouts/avatar/overview/src/index.tsx | 34 +++----- samples/layouts/avatar/shape/src/index.css | 79 +++++++++-------- samples/layouts/avatar/shape/src/index.tsx | 79 ++++++----------- samples/layouts/avatar/size/src/index.css | 86 ++++++++++--------- samples/layouts/avatar/size/src/index.tsx | 76 +++++----------- samples/layouts/avatar/styling/src/icons.ts | 14 +++ samples/layouts/avatar/styling/src/index.css | 55 ++++++++---- samples/layouts/avatar/styling/src/index.tsx | 43 +++++----- .../avatar/tailwind-styling/src/index.css | 53 ++++++++++++ .../avatar/tailwind-styling/src/index.tsx | 66 +++++++------- samples/layouts/avatar/variants/src/index.css | 79 +++++++++-------- samples/layouts/avatar/variants/src/index.tsx | 75 +++++----------- 13 files changed, 384 insertions(+), 399 deletions(-) create mode 100644 samples/layouts/avatar/styling/src/icons.ts diff --git a/samples/layouts/avatar/overview/src/index.css b/samples/layouts/avatar/overview/src/index.css index e5faf87285..9407c4b19a 100644 --- a/samples/layouts/avatar/overview/src/index.css +++ b/samples/layouts/avatar/overview/src/index.css @@ -1,49 +1,43 @@ .avatar-overview-sample { display: flex; + flex-wrap: wrap; align-items: center; justify-content: center; - gap: 90px; + gap: 2rem; + height: 100vh; + padding: 2rem; } -.size-large { +.avatar-overview-sample igc-avatar { --ig-size: var(--ig-size-large); } -.avatar-with-badge { - position: relative; - display: inline-flex; +.profile-status { + anchor-name: --profile-status; } -.avatar-status { +.status-badge { + --ig-size: var(--ig-size-large); position: absolute; - right: 6px; - bottom: 6px; + position-anchor: --profile-status; + inset-block-start: anchor(85%); + inset-inline-start: anchor(85%); + translate: -50% -50%; } .avatar-stack { - display: inline-flex; - align-items: center; -} - -.avatar-stack .size-large { - margin-left: -24px; + display: flex; } -.avatar-stack .size-large:first-child { - margin-left: 0; +.avatar-stack igc-avatar + igc-avatar { + margin-inline-start: -1.5rem; } -.avatar-stack .size-large::part(base) { - border: 4px solid #fff; - box-sizing: border-box; +.avatar-stack igc-avatar::part(base) { + box-shadow: 0 0 0 0.375rem var(--ig-surface-500); } -.avatar-stack .size-large:last-child { +.avatar-stack igc-avatar:last-child { --ig-avatar-background: #e8eef6; --ig-avatar-color: #6f8097; } - -.avatar-stack .size-large:last-child::part(initials) { - font-size: 32px; - font-weight: 500; -} diff --git a/samples/layouts/avatar/overview/src/index.tsx b/samples/layouts/avatar/overview/src/index.tsx index 2892a11193..aa0a8741c8 100644 --- a/samples/layouts/avatar/overview/src/index.tsx +++ b/samples/layouts/avatar/overview/src/index.tsx @@ -2,55 +2,43 @@ import React from "react"; import ReactDOM from "react-dom/client"; import "./index.css"; import { IgrAvatar, IgrBadge } from "igniteui-react"; -import "igniteui-webcomponents/themes/light/material.css"; +import "igniteui-webcomponents/themes/light/bootstrap.css"; export default function AvatarOverview() { return (
- - - - + +
diff --git a/samples/layouts/avatar/shape/src/index.css b/samples/layouts/avatar/shape/src/index.css index a477d54e9d..0db5cf5990 100644 --- a/samples/layouts/avatar/shape/src/index.css +++ b/samples/layouts/avatar/shape/src/index.css @@ -1,52 +1,61 @@ -.avatar-overview-sample { - display: flex; - align-items: center; - justify-content: center; - gap: 90px; - min-height: 100vh; -} - -.size-small { +.avatar-shape-sample { + display: grid; + grid-auto-flow: column; + grid-template-rows: auto auto; + place-content: center; + place-items: center; + column-gap: 2.5rem; + row-gap: 0.5rem; + height: 100vh; + padding: 2rem; +} + +:where(igc-avatar) { --ig-size: var(--ig-size-small); + grid-row: 1; } -.avatar-variant { - display: inline-flex; - flex-direction: column; - align-items: center; - gap: 8px; -} - -.avatar-label { +:where(span) { + grid-row: 2; + text-align: center; color: var(--ig-gray-600); + font-family: "Aktiv Grotesk", Arial, sans-serif; font-size: 0.875rem; line-height: 1.25rem; + margin: 0; } -.avatar-with-badge { - position: relative; - display: inline-flex; -} +:where(igc-badge) { + --ig-size: var(--ig-size-small); + --ig-badge-icon-color: #ffffff; + --ig-badge-text-color: #ffffff; -.avatar-status { - --size: 18px; position: absolute; - right: -4px; - bottom: -4px; - font-size: 0.75rem; - line-height: 1; + inset-block-start: anchor(85.5%); + inset-inline-start: anchor(85.5%); + translate: -50% -50%; } -.avatar-dot-badge { - --size: 12px; - right: 3px; - bottom: 3px; +.avatar-shape-sample igc-avatar:nth-of-type(1) { + anchor-name: --circle; } -.avatar-count-badge { - --ig-badge-text-color: #ffffff; +.avatar-shape-sample igc-avatar:nth-of-type(2) { + anchor-name: --square; } -.avatar-check-badge { - --ig-badge-icon-color: #ffffff; +.avatar-shape-sample igc-avatar:nth-of-type(3) { + anchor-name: --rounded; +} + +.avatar-shape-sample igc-badge:nth-of-type(1) { + position-anchor: --circle; +} + +.avatar-shape-sample igc-badge:nth-of-type(2) { + position-anchor: --square; +} + +.avatar-shape-sample igc-badge:nth-of-type(3) { + position-anchor: --rounded; } diff --git a/samples/layouts/avatar/shape/src/index.tsx b/samples/layouts/avatar/shape/src/index.tsx index adaaac1538..7a83c962e6 100644 --- a/samples/layouts/avatar/shape/src/index.tsx +++ b/samples/layouts/avatar/shape/src/index.tsx @@ -7,7 +7,7 @@ import { IgrIcon, registerIconFromText, } from "igniteui-react"; -import "igniteui-webcomponents/themes/light/material.css"; +import "igniteui-webcomponents/themes/light/bootstrap.css"; const mailIcon = ''; @@ -22,61 +22,32 @@ export default function AvatarShape() { }, []); return ( -
-
- - - - - Circle -
+
+ + + Circle -
- - - - - - 2 - - - Square -
+ + + + + 2 + + Square -
- - - - - - - Rounded -
+ + + + + Rounded
); } diff --git a/samples/layouts/avatar/size/src/index.css b/samples/layouts/avatar/size/src/index.css index 00002afa14..1b1f7fe7d5 100644 --- a/samples/layouts/avatar/size/src/index.css +++ b/samples/layouts/avatar/size/src/index.css @@ -1,60 +1,62 @@ -.avatar-overview-sample { - display: flex; - align-items: center; - justify-content: center; - gap: 90px; - min-height: 100vh; +.avatar-size-sample { + display: grid; + grid-auto-flow: column; + grid-template-rows: auto auto; + place-content: center; + place-items: center; + column-gap: 3rem; + row-gap: 0.5rem; + height: 100vh; + padding: 2rem; } -.size-large { - --ig-size: var(--ig-size-large); -} -.size-medium { - --ig-size: var(--ig-size-medium); +:where(igc-avatar) { + grid-row: 1; } -.size-small { - --ig-size: var(--ig-size-small); + +:where(span) { + grid-row: 2; + text-align: center; + color: var(--ig-gray-600); + font-family: "Aktiv Grotesk", Arial, sans-serif; + font-size: 0.875rem; + line-height: 1.25rem; + margin: 0; } -.avatar-variant { - display: inline-flex; - flex-direction: column; - align-items: center; - gap: 8px; +:where(igc-badge) { + position: absolute; + inset-block-start: anchor(85.5%); + inset-inline-start: anchor(85.5%); + translate: -50% -50%; } -.avatar-with-badge { - width: 88px; - height: 88px; - position: relative; - display: inline-flex; - align-items: center; - justify-content: center; +.avatar-size-sample igc-avatar:nth-of-type(1) { + --ig-size: var(--ig-size-large); + anchor-name: --large; } -.avatar-label { - color: var(--ig-gray-600); - font-size: 0.875rem; - line-height: 1.25rem; +.avatar-size-sample igc-avatar:nth-of-type(2) { + --ig-size: var(--ig-size-medium); + anchor-name: --medium; } -.avatar-status { - --size: 18px; - position: absolute; - right: var(--badge-offset); - bottom: var(--badge-offset); - font-size: 0.75rem; - line-height: 1; +.avatar-size-sample igc-avatar:nth-of-type(3) { + --ig-size: var(--ig-size-small); + anchor-name: --small; } -.avatar-with-badge:has(.size-large) { - --badge-offset: 7px; +.avatar-size-sample igc-badge:nth-of-type(1) { + --ig-size: var(--ig-size-large); + position-anchor: --large; } -.avatar-with-badge:has(.size-medium) { - --badge-offset: 15px; +.avatar-size-sample igc-badge:nth-of-type(2) { + --ig-size: var(--ig-size-medium); + position-anchor: --medium; } -.avatar-with-badge:has(.size-small) { - --badge-offset: 24px; +.avatar-size-sample igc-badge:nth-of-type(3) { + --ig-size: var(--ig-size-small); + position-anchor: --small; } diff --git a/samples/layouts/avatar/size/src/index.tsx b/samples/layouts/avatar/size/src/index.tsx index e2cff6bac6..99204114a3 100644 --- a/samples/layouts/avatar/size/src/index.tsx +++ b/samples/layouts/avatar/size/src/index.tsx @@ -2,64 +2,34 @@ import React from "react"; import ReactDOM from "react-dom/client"; import "./index.css"; import { IgrAvatar, IgrBadge } from "igniteui-react"; -import "igniteui-webcomponents/themes/light/material.css"; +import "igniteui-webcomponents/themes/light/bootstrap.css"; export default function AvatarSize() { return ( -
-
- - - - - Large -
+
+ + + Large -
- - - - - Medium -
+ + + Medium -
- - - - - Small -
+ + + Small
); } diff --git a/samples/layouts/avatar/styling/src/icons.ts b/samples/layouts/avatar/styling/src/icons.ts new file mode 100644 index 0000000000..c593c1717f --- /dev/null +++ b/samples/layouts/avatar/styling/src/icons.ts @@ -0,0 +1,14 @@ +export const checkIcon = + ''; + +export const calendarTodayIcon = + ''; + +export const xIcon = + ''; + +export const horizontalRuleIcon = + ''; + +export const peopleIcon = + ''; diff --git a/samples/layouts/avatar/styling/src/index.css b/samples/layouts/avatar/styling/src/index.css index 4f5edce1c6..4504b9b01f 100644 --- a/samples/layouts/avatar/styling/src/index.css +++ b/samples/layouts/avatar/styling/src/index.css @@ -2,42 +2,61 @@ display: flex; align-items: center; justify-content: center; + height: 100vh; } .chat-list { - width: 344px; - max-width: 100%; + --ig-list-header-text-color: var(--ig-gray-900); + max-width: 20.5rem; } -.size-small { - --ig-size: var(--ig-size-small); +.chat-list * { + font-family: "Aktiv Grotesk", Arial, sans-serif; +} + +.chat-list [slot="title"] { + font-weight: 600; +} + +.chat-list [slot="end"] { + color: var(--ig-gray-600); + font-size: 0.875rem; + line-height: 1.25rem; } -.size-medium { - --ig-size: var(--ig-size-medium); +.chat-list-item--split { + --border-width: 0.0625rem; + --border-color: var(--ig-gray-300); } -.size-large { - --ig-size: var(--ig-size-large); +:where(igc-avatar) { + --ig-size: var(--ig-size-small); + --ig-avatar-background: var(--ig-gray-300); + --ig-avatar-color: var(--ig-gray-300-contrast); + --ig-avatar-icon-color: var(--ig-gray-300-contrast); +} + +.avatar-icon { + --ig-size: var(--ig-size-small); } .avatar-with-badge { position: relative; - display: inline-flex; } -.avatar-status { +:where(igc-badge) { + --ig-size: var(--ig-size-small); --ig-badge-icon-color: #ffffff; - position: absolute; - right: -4px; - bottom: -4px; + --ig-badge-text-color: #ffffff; } -.avatar-muted-badge { - --ig-badge-background-color: var(--ig-gray-300); - --ig-badge-icon-color: var(--ig-gray-700); +.avatar-status { + --ig-size: var(--ig-size-small); + position: absolute; + inset-inline-end: -0.25rem; + inset-block-end: -0.25rem; } -.avatar-muted { - --ig-avatar-background: #D2DBE8; +.avatar-muted-badge { + --ig-badge-background-color: var(--ig-gray-500); } diff --git a/samples/layouts/avatar/styling/src/index.tsx b/samples/layouts/avatar/styling/src/index.tsx index 0d427044c9..0889700e99 100644 --- a/samples/layouts/avatar/styling/src/index.tsx +++ b/samples/layouts/avatar/styling/src/index.tsx @@ -10,22 +10,14 @@ import { IgrIcon, registerIconFromText, } from "igniteui-react"; -import "igniteui-webcomponents/themes/light/material.css"; - -const checkIcon = - ''; - -const calendarIcon = - ''; - -const xIcon = - ''; - -const horizontalRuleIcon = - ''; - -const groupIcon = - ''; +import "igniteui-webcomponents/themes/light/bootstrap.css"; +import { + calendarTodayIcon, + checkIcon, + horizontalRuleIcon, + peopleIcon, + xIcon, +} from "./icons"; type AvatarListItem = { title: string; @@ -107,6 +99,7 @@ const sections: AvatarListSection[] = [ avatar: { icon: "calendar", alt: "Calendar Icon.", + className: "avatar-meeting", }, }, { @@ -114,8 +107,9 @@ const sections: AvatarListSection[] = [ subtitle: "https://www.infra.com", end: "11:30 AM", avatar: { - icon: "group", + icon: "people", alt: "Group Icon.", + className: "avatar-meeting", }, }, ], @@ -125,14 +119,14 @@ const sections: AvatarListSection[] = [ function renderAvatar(item: AvatarListItem) { return ( {item.avatar.icon && ( - + )} ); @@ -140,11 +134,11 @@ function renderAvatar(item: AvatarListItem) { export default function AvatarStyling() { useEffect(() => { - registerIconFromText("calendar", calendarIcon, "material"); + registerIconFromText("calendar", calendarTodayIcon, "material"); registerIconFromText("check", checkIcon, "material"); registerIconFromText("x", xIcon, "material"); registerIconFromText("horizontalRule", horizontalRuleIcon, "material"); - registerIconFromText("group", groupIcon, "material"); + registerIconFromText("people", peopleIcon, "material"); }, []); return ( @@ -154,12 +148,15 @@ export default function AvatarStyling() { {section.header} {section.items.map((item) => ( - +
{renderAvatar(item)} {item.badge && ( - - +
+ + Cafe interior @@ -51,21 +51,17 @@ export default function AvatarTailwindStyling() { /> Kate Thompson +

+ 3D Artist. Turning polygons into worlds and immersive digital + realities +

-

- 3D Artist. Turning polygons into worlds and immersive digital - realities -

-
+
{profileStats.map((stat, index) => (
- - {stat.value} - - - {stat.label} - + {stat.value} + {stat.label}
{index < profileStats.length - 1 && ( @@ -75,13 +71,13 @@ export default function AvatarTailwindStyling() {
- + - FOLLOW - + FOLLOW + -
+
- + Kate Thompson - -

- 3D Artist. Turning polygons into worlds and immersive digital - realities -

-
+

+ 3D Artist. Turning polygons into worlds and immersive digital + realities +

+ +
{profileStats.map((stat, index) => (
- - {stat.value} - - - {stat.label} - + {stat.value} + {stat.label}
{index < profileStats.length - 1 && ( @@ -143,10 +135,10 @@ export default function AvatarTailwindStyling() {
- + - FOLLOW - + FOLLOW +
diff --git a/samples/layouts/avatar/variants/src/index.css b/samples/layouts/avatar/variants/src/index.css index a477d54e9d..e0ff640827 100644 --- a/samples/layouts/avatar/variants/src/index.css +++ b/samples/layouts/avatar/variants/src/index.css @@ -1,52 +1,61 @@ -.avatar-overview-sample { - display: flex; - align-items: center; - justify-content: center; - gap: 90px; - min-height: 100vh; -} - -.size-small { +.avatar-variants-sample { + display: grid; + grid-auto-flow: column; + grid-template-rows: auto auto; + place-content: center; + place-items: center; + column-gap: 3rem; + row-gap: 0.5rem; + height: 100vh; + padding: 2rem; +} + +:where(igc-avatar) { --ig-size: var(--ig-size-small); + grid-row: 1; } -.avatar-variant { - display: inline-flex; - flex-direction: column; - align-items: center; - gap: 8px; -} - -.avatar-label { +:where(span) { + grid-row: 2; + text-align: center; color: var(--ig-gray-600); + font-family: "Aktiv Grotesk", Arial, sans-serif; font-size: 0.875rem; line-height: 1.25rem; + margin: 0; } -.avatar-with-badge { - position: relative; - display: inline-flex; -} +:where(igc-badge) { + --ig-size: var(--ig-size-small); + --ig-badge-icon-color: #ffffff; + --ig-badge-text-color: #ffffff; -.avatar-status { - --size: 18px; position: absolute; - right: -4px; - bottom: -4px; - font-size: 0.75rem; - line-height: 1; + inset-block-start: anchor(85.5%); + inset-inline-start: anchor(85.5%); + translate: -50% -50%; } -.avatar-dot-badge { - --size: 12px; - right: 3px; - bottom: 3px; +.avatar-variants-sample igc-avatar:nth-of-type(1) { + anchor-name: --image; } -.avatar-count-badge { - --ig-badge-text-color: #ffffff; +.avatar-variants-sample igc-avatar:nth-of-type(2) { + anchor-name: --icon; } -.avatar-check-badge { - --ig-badge-icon-color: #ffffff; +.avatar-variants-sample igc-avatar:nth-of-type(3) { + anchor-name: --initials; +} + +.avatar-variants-sample igc-badge:nth-of-type(1) { + position-anchor: --image; +} + +.avatar-variants-sample igc-badge:nth-of-type(2) { + position-anchor: --icon; +} + +.avatar-variants-sample igc-badge:nth-of-type(3) { + position-anchor: --initials; } diff --git a/samples/layouts/avatar/variants/src/index.tsx b/samples/layouts/avatar/variants/src/index.tsx index 45146dccea..711787f4fe 100644 --- a/samples/layouts/avatar/variants/src/index.tsx +++ b/samples/layouts/avatar/variants/src/index.tsx @@ -7,7 +7,7 @@ import { IgrIcon, registerIconFromText, } from "igniteui-react"; -import "igniteui-webcomponents/themes/light/material.css"; +import "igniteui-webcomponents/themes/light/bootstrap.css"; const mailIcon = ''; @@ -22,61 +22,28 @@ export default function AvatarVariants() { }, []); return ( -
-
- - - - - Image -
+
+ + + Image -
- - - - - - 2 - - - Icon -
+ + + + + 2 + + Icon -
- - - - - - - Initials -
+ + + + + Initials
); } From 3258f26ab79c46557d22f695afa137a6a46711d9 Mon Sep 17 00:00:00 2001 From: Stamen Stoychev Date: Thu, 27 Aug 2026 10:56:17 +0300 Subject: [PATCH 22/23] feat(*): add theming widget handling (#1093) --- browser/src/index.tsx | 3 + browser/src/sample-theme.ts | 187 ++++++++++++++++++++++++++++++++++++ 2 files changed, 190 insertions(+) create mode 100644 browser/src/sample-theme.ts diff --git a/browser/src/index.tsx b/browser/src/index.tsx index 36e80a84fe..cf0ac0f45e 100644 --- a/browser/src/index.tsx +++ b/browser/src/index.tsx @@ -5,6 +5,7 @@ import { BrowserRouter } from "react-router-dom"; import SamplesBrowser from "./navigation/SamplesBrowser"; import RegisterServiceWorker from './serviceWorker'; import { createRoot } from 'react-dom/client'; +import { initSampleThemeListener } from './sample-theme'; import { initSampleSizeReporter } from './sample-size-reporter'; import './index.css'; // styles shared between all samples @@ -22,6 +23,8 @@ import './index.css'; // styles shared between all samples // ); // }); +// Lets the docs ThemingWidget re-theme this browser while embedded. +initSampleThemeListener(); // Lets docs samples embedded with size their iframe to // their content. Dormant unless the docs host asks for it. initSampleSizeReporter(); diff --git a/browser/src/sample-theme.ts b/browser/src/sample-theme.ts new file mode 100644 index 0000000000..1c202a346a --- /dev/null +++ b/browser/src/sample-theme.ts @@ -0,0 +1,187 @@ +/** + * sample-theme.ts + * + * Lets the docs site re-theme this samples browser while it is embedded in a + * docs `` iframe. + * + * The docs ThemingWidget dispatches `igd-theme-change`; the Sample widget + * bridges that to `postMessage({ type: 'igd-sample-theme', theme, mode })` on + * the frame, and re-posts the current selection on every iframe `load`. Here we + * validate the sender and swap the Ignite UI theme stylesheets to match. + * + * Dormant unless a trusted docs host asks for a theme. + */ + +type ThemeName = 'material' | 'fluent' | 'bootstrap' | 'indigo'; +type ThemeMode = 'light' | 'dark' | 'system'; +type ResolvedMode = 'light' | 'dark'; + +interface ThemeMessage { + type?: string; + event?: string; + theme?: string; + themeName?: string; + mode?: string; +} + +type CssLoader = () => Promise<{ default: string }>; + +const MESSAGE_TYPE = 'igd-sample-theme'; +const STYLE_ATTR = 'data-igd-sample-theme'; +const DARK_QUERY = '(prefers-color-scheme: dark)'; + +// Vite only bundles dynamic imports with literal specifiers, so every +// mode/theme pair is spelled out. `?inline` yields the CSS as a string instead +// of injecting a sheet, which lets selections replace each other in owned +//