|
@@ -1,12 +1,12 @@
|
|
|
import { createGraph, switchPlot } from "../core";
|
|
import { createGraph, switchPlot } from "../core";
|
|
|
import { materialCategoryColors, months, monthsPretty, prettyModeNames } from "../staticData/constants";
|
|
import { materialCategoryColors, months, monthsPretty, prettyModeNames } from "../staticData/constants";
|
|
|
-import { addConfigField, clearChildren, getCompanyId, getData, getMatCategory, getMatColor, prettyMonthName } from "../utils";
|
|
|
|
|
|
|
+import { addConfigField, clearChildren, getCompanyId, getData, getMatCategory, getMatColor, prettyMonthName, updateUsernameLabel } from "../utils";
|
|
|
import { Graph } from "./graph";
|
|
import { Graph } from "./graph";
|
|
|
|
|
|
|
|
export class CompanyTotals implements Graph {
|
|
export class CompanyTotals implements Graph {
|
|
|
id = "compTotals";
|
|
id = "compTotals";
|
|
|
displayName = "Company Totals";
|
|
displayName = "Company Totals";
|
|
|
- configFieldIDs = ["chartType", "metric", "month", "companyName"];
|
|
|
|
|
|
|
+ configFieldIDs = ["chartType", "metric", "group", "month", "companyName"];
|
|
|
loadedData: any;
|
|
loadedData: any;
|
|
|
urlParams: any;
|
|
urlParams: any;
|
|
|
|
|
|
|
@@ -26,10 +26,13 @@ export class CompanyTotals implements Graph {
|
|
|
clearChildren(configDiv);
|
|
clearChildren(configDiv);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- configDiv?.appendChild(addConfigField("select", "chartType", "Chart Type: ", {prettyValues: ["Bar", "Pie", "Treemap (Mat)", "Treemap (Cat)"], values: ["bar", "pie", "treemap", "treemap-categories"]}, useURLParams ? this.urlParams.chartType : undefined, updateFunc, "-30px"));
|
|
|
|
|
|
|
+ const usernameLabel = useURLParams && this.urlParams.group && this.urlParams.group != 'company' ? 'Corp Code: ' : 'Username: ';
|
|
|
|
|
+
|
|
|
|
|
+ configDiv?.appendChild(addConfigField("select", "chartType", "Chart Type: ", {prettyValues: ["Bar", "Pie", "Treemap (Mat)", "Treemap (Cat)"], values: ["bar", "pie", "treemap", "treemap-categories"]}, useURLParams ? this.urlParams.chartType : "treemap", updateFunc, "-30px"));
|
|
|
configDiv?.appendChild(addConfigField("select", "metric", "Metric: ", {prettyValues: ["Volume", "Profit"], values: ["volume", "profit"]}, useURLParams ? this.urlParams.metric : undefined, updateFunc));
|
|
configDiv?.appendChild(addConfigField("select", "metric", "Metric: ", {prettyValues: ["Volume", "Profit"], values: ["volume", "profit"]}, useURLParams ? this.urlParams.metric : undefined, updateFunc));
|
|
|
|
|
+ configDiv?.appendChild(addConfigField("select", "group", "Group: ", {prettyValues: ["By Company", "By Corporation"], values: ["company", "corp"]}, useURLParams ? this.urlParams.group : undefined, updateUsernameLabel));
|
|
|
configDiv?.appendChild(addConfigField("select", "month", "Month: ", {prettyValues: monthsPretty, "values": months}, useURLParams && this.urlParams.month ? this.urlParams.month : months[months.length - 1], updateFunc));
|
|
configDiv?.appendChild(addConfigField("select", "month", "Month: ", {prettyValues: monthsPretty, "values": months}, useURLParams && this.urlParams.month ? this.urlParams.month : months[months.length - 1], updateFunc));
|
|
|
- configDiv?.appendChild(addConfigField("input", "companyName", "Username: ", undefined, useURLParams ? this.urlParams.companyName : undefined, updateFunc, "-27px"));
|
|
|
|
|
|
|
+ configDiv?.appendChild(addConfigField("input", "companyName", usernameLabel, undefined, useURLParams ? this.urlParams.companyName : undefined, updateFunc, "-27px"));
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -40,18 +43,51 @@ export class CompanyTotals implements Graph {
|
|
|
const companyData = await getData(this.loadedData, "company", configValues.month);
|
|
const companyData = await getData(this.loadedData, "company", configValues.month);
|
|
|
const knownCompanies = await getData(this.loadedData, "knownCompanies");
|
|
const knownCompanies = await getData(this.loadedData, "knownCompanies");
|
|
|
|
|
|
|
|
- // Get Company ID
|
|
|
|
|
- var companyID = await getCompanyId(configValues.companyName, this.loadedData) as string;
|
|
|
|
|
- if(!companyID){ return; }
|
|
|
|
|
- var companyName = knownCompanies[companyID];
|
|
|
|
|
|
|
+ var companyName: string;
|
|
|
|
|
+ var prodData: any;
|
|
|
|
|
+
|
|
|
|
|
+ if(configValues.group == 'company')
|
|
|
|
|
+ {
|
|
|
|
|
+ // Get Company ID
|
|
|
|
|
+ var companyID = await getCompanyId(configValues.companyName, this.loadedData) as string;
|
|
|
|
|
+ if(!companyID){ return; }
|
|
|
|
|
+ companyName = knownCompanies[companyID]?.Username;
|
|
|
|
|
+ if(!companyData.individual[companyID]){return;}
|
|
|
|
|
+ prodData = companyData.individual[companyID];
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ const parentCorps = await getData(this.loadedData, 'parentCorps');
|
|
|
|
|
+ companyName = configValues.companyName.toUpperCase();
|
|
|
|
|
+ prodData = {}
|
|
|
|
|
+
|
|
|
|
|
+ Object.keys(companyData.individual).forEach(id => {
|
|
|
|
|
+ const companyObj = knownCompanies[id]
|
|
|
|
|
+ if(companyObj && (companyObj.Corporation == companyName || parentCorps[companyObj.Corporation] == companyName))
|
|
|
|
|
+ {
|
|
|
|
|
+ const indivCompanyData = companyData.individual[id]
|
|
|
|
|
+ Object.keys(indivCompanyData).forEach(ticker => {
|
|
|
|
|
+ if(!prodData[ticker])
|
|
|
|
|
+ {
|
|
|
|
|
+ prodData[ticker] = {volume: 0, profit: 0, amount: 0, rank: 0}
|
|
|
|
|
+ }
|
|
|
|
|
+ Object.keys(indivCompanyData[ticker]).forEach(metric => {
|
|
|
|
|
+ prodData[ticker][metric] += indivCompanyData[ticker][metric]
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ if(Object.keys(prodData).length == 0){return;}
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- if(!companyData.individual[companyID]){return;}
|
|
|
|
|
// Parse Data
|
|
// Parse Data
|
|
|
var catData = [] as number[]; // Y-axis of chart
|
|
var catData = [] as number[]; // Y-axis of chart
|
|
|
var categories = [] as any[]; // X-axis of chart
|
|
var categories = [] as any[]; // X-axis of chart
|
|
|
var totalValue = 0; // Total of metric
|
|
var totalValue = 0; // Total of metric
|
|
|
- Object.keys(companyData.individual[companyID]).forEach((ticker: string) => {
|
|
|
|
|
- const metric = companyData.individual[companyID][ticker][configValues.metric];
|
|
|
|
|
|
|
+
|
|
|
|
|
+ Object.keys(prodData).forEach((ticker: string) => {
|
|
|
|
|
+ const metric = prodData[ticker][configValues.metric];
|
|
|
if(metric < 0 && (configValues.chartType == "treemap" || configValues.chartType == "treemap-categories")){return;}
|
|
if(metric < 0 && (configValues.chartType == "treemap" || configValues.chartType == "treemap-categories")){return;}
|
|
|
totalValue += metric;
|
|
totalValue += metric;
|
|
|
|
|
|
|
@@ -121,7 +157,7 @@ export class CompanyTotals implements Graph {
|
|
|
maxdepth: 2,
|
|
maxdepth: 2,
|
|
|
branchvalues: 'total',
|
|
branchvalues: 'total',
|
|
|
marker: {
|
|
marker: {
|
|
|
- colors: colors,
|
|
|
|
|
|
|
+ colors: colors
|
|
|
},
|
|
},
|
|
|
tiling: {
|
|
tiling: {
|
|
|
pad: 0,
|
|
pad: 0,
|
|
@@ -192,4 +228,6 @@ export class CompanyTotals implements Graph {
|
|
|
}, {})
|
|
}, {})
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|