UNPKG

4.88 kBJavaScriptView Raw
1var Package = (function () {
2 function Package() {
3 }
4 Package.fromApi = function (data) {
5 var newPackage = new Package();
6 if (!data.pricing && data.selling_price) {
7 data.pricing = {
8 currency: data.currency,
9 prices: [{
10 price: data.selling_price * 100,
11 frequency: data.billingFrequency
12 }]
13 };
14 }
15 Object.assign(newPackage, data);
16 if (!newPackage.name) {
17 newPackage.name = 'Untitled';
18 }
19 if (data.created) {
20 newPackage.createdDate = new Date(data.created);
21 }
22 if (data.updated) {
23 newPackage.updatedDate = new Date(data.updated);
24 }
25 return newPackage;
26 };
27 Object.defineProperty(Package.prototype, "isPackageFree", {
28 get: function () {
29 return this.pricing && this.pricing.prices ? this.pricing.prices.some(function (p) { return p.price === 0; }) : null;
30 },
31 enumerable: true,
32 configurable: true
33 });
34 Object.defineProperty(Package.prototype, "shouldContactSales", {
35 get: function () {
36 return this.pricing && this.pricing.prices ?
37 this.pricing.prices.some(function (p) { return p.price === null; }) ||
38 this.pricing.prices.length === 0 : true;
39 },
40 enumerable: true,
41 configurable: true
42 });
43 Object.defineProperty(Package.prototype, "formattedPricingList", {
44 get: function () {
45 if (this.pricing && this.pricing.prices && this.pricing.prices.length) {
46 var hasCurrencyAndIsNotUSD = this.pricing.currency && this.pricing.currency !== 'USD';
47 var currencyStr_1 = hasCurrencyAndIsNotUSD ? this.pricing.currency : '';
48 var currencySymbol_1 = Package.getCurrencySymbol(this.pricing.currency);
49 return this.pricing.prices.map(function (price) {
50 var frequencyStr = price.frequency ? '/ ' + Package.getCapitalizeFirstLetter(price.frequency) : '';
51 var roundedPrice = (price.price / 100.0).toFixed(2);
52 var priceStr = "" + currencySymbol_1 + roundedPrice + " " + currencyStr_1 + " " + frequencyStr;
53 return (priceStr.trim().replace(/\s+/g, ' '));
54 });
55 }
56 else {
57 return ['Contact Sales'];
58 }
59 },
60 enumerable: true,
61 configurable: true
62 });
63 Object.defineProperty(Package.prototype, "priceStrings", {
64 get: function () {
65 if (this.shouldContactSales) {
66 return ['Contact Sales'];
67 }
68 if (this.isPackageFree) {
69 return ['Free'];
70 }
71 return this.formattedPricingList;
72 },
73 enumerable: true,
74 configurable: true
75 });
76 Object.defineProperty(Package.prototype, "formattedWholesalePrice", {
77 get: function () {
78 return this.priceStrings.join(' + ');
79 },
80 enumerable: true,
81 configurable: true
82 });
83 Package.getCapitalizeFirstLetter = function (inputString) {
84 return inputString ? inputString.charAt(0).toUpperCase() + inputString.slice(1) : null;
85 };
86 Package.getCurrencySymbol = function (currency) {
87 var currencySymbol = '$';
88 switch (currency) {
89 case 'EUR':
90 currencySymbol = '\u20AC';
91 break;
92 case 'GBP':
93 currencySymbol = '\u00A3';
94 break;
95 case 'CHF':
96 currencySymbol = 'Fr';
97 break;
98 case 'CNY':
99 currencySymbol = '\u00A5';
100 break;
101 case 'JPY':
102 currencySymbol = '\u00A5';
103 break;
104 case 'CZK':
105 currencySymbol = 'K\u010d';
106 break;
107 case 'INR':
108 currencySymbol = '\u20B9';
109 break;
110 case 'KHR':
111 currencySymbol = '\u17DB';
112 break;
113 case 'KRW':
114 currencySymbol = '\u20A9';
115 break;
116 case 'NOK':
117 currencySymbol = 'kr';
118 break;
119 case 'SEK':
120 currencySymbol = 'kr';
121 break;
122 case 'RUB':
123 currencySymbol = '\u20BD';
124 break;
125 case 'TRY':
126 currencySymbol = '\u20BA';
127 break;
128 case 'ZAR':
129 currencySymbol = 'R';
130 break;
131 default:
132 currencySymbol = '$';
133 break;
134 }
135 return currencySymbol;
136 };
137 return Package;
138}());
139export { Package };