Skip to content

Commit

Permalink
Fix colors on the URL
Browse files Browse the repository at this point in the history
  • Loading branch information
RafaelLyra8 committed Oct 26, 2023
1 parent fde525b commit 30002c7
Show file tree
Hide file tree
Showing 10 changed files with 39 additions and 22 deletions.
2 changes: 1 addition & 1 deletion src/components/Footer/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from "react";
import * as S from "./styled";

const version = "2023-10-23-92b1917";
const version = "2023-10-26-fde525b";

const Footer: React.FC = () => {
return (
Expand Down
2 changes: 1 addition & 1 deletion src/controllers/UrlLoader/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ class UrlLoaderImpl implements UrlLoader {
control.updateTimeAxis();
for (const data of pvs) {
console.info(`Plotting `, data);
PlotPVs.plotPV({ name: data.pvname, optimize: data.optimize, diff: data.diff, bins: data.bins, updateChart: true });
PlotPVs.plotPV({ name: data.pvname, optimize: data.optimize, diff: data.diff, bins: data.bins, color: data.color, updateChart: true });
}
}
}
Expand Down
10 changes: 8 additions & 2 deletions src/entities/Chart/ChartJS/impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -340,14 +340,20 @@ class ChartJSControllerImpl implements ChartJSController {
ChartDispatcher.addAxisY(dataAxisSettings);
}

appendDataset(data: any[], optimized: boolean, diffted: boolean, bins: number, metadata: ArchiverMetadata): void {
appendDataset(data: any[], optimized: boolean, diffted: boolean, bins: number, color: string|undefined, metadata: ArchiverMetadata): void {
const { pvName, EGU, PREC } = metadata;
const unit = eguNormalize(EGU, pvName);

const precision = PREC === 0 || PREC === undefined || PREC === null ? 4 : PREC;

// Parses the data fetched from the archiver the way that the chart's internal classes can plot
const color = colorStack.length > 0 ? colorStack.pop() : randomColorGenerator();
if(!color){
color = colorStack.length > 0 ? colorStack.pop() : randomColorGenerator();
}else{
const idx_color = colorStack.indexOf(color);
delete colorStack[idx_color];
}


// Adds a new vertical axis if no other with the same unit exists
this.appendDataAxis(unit, precision);
Expand Down
2 changes: 1 addition & 1 deletion src/entities/Chart/ChartJS/interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export interface ChartJSController {
toggleAxisType(axisId: string): void;

appendDataAxis(nId: string, ticksPrecision: number): void;
appendDataset(data: any[], optimized: boolean, diff: boolean, bins: number, metadata: ArchiverMetadata): void;
appendDataset(data: any[], optimized: boolean, diff: boolean, bins: number, color: string, metadata: ArchiverMetadata): void;

setDatasetOptimized(name: string, optimized: boolean): void;
setDatasetDiff(name: string, diffted: boolean): void;
Expand Down
7 changes: 4 additions & 3 deletions src/entities/Chart/impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ class ChartImpl implements ChartInterface {
}
}

appendDataset(data: any[], optimized: boolean, diff: boolean, bins: number, metadata: ArchiverMetadata): void {
this.chartjs.appendDataset(data, optimized, diff, bins, metadata);
appendDataset(data: any[], optimized: boolean, diff: boolean, bins: number, color: string, metadata: ArchiverMetadata): void {
this.chartjs.appendDataset(data, optimized, diff, bins, color, metadata);
}

init(c: Chart): void {
Expand Down Expand Up @@ -757,8 +757,9 @@ class ChartImpl implements ChartInterface {
const {
label,
pv: { bins, optimized, diff },
backgroundColor
} = this.chartjs.getDatasetSettings(e.label);
pvs.push({ bins, label, optimized, diff });
pvs.push({ bins, label, optimized, diff, color:backgroundColor });
});
}
const settings: Settings = { end: this.time.getEnd(), start: this.time.getStart(), ref: this.time.getRefDiff(), pvs };
Expand Down
2 changes: 1 addition & 1 deletion src/entities/Chart/interface.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ArchiverMetadata } from "../../data-access/interface";

interface ChartInterface {
appendDataset(data: any[], optimized: boolean, diff: boolean, bins: number, metadata: ArchiverMetadata): void;
appendDataset(data: any[], optimized: boolean, diff: boolean, bins: number, color: string, metadata: ArchiverMetadata): void;
updateTimeAxis(start?: Date, end?: Date): void;
}
export default ChartInterface;
15 changes: 8 additions & 7 deletions src/use-cases/PlotPVs/impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class PlotPVsImpl implements PlotPVs {
optimized: boolean,
diff: boolean,
bins: number,
color: string,
metadata: ArchiverMetadata
): Promise<void> {
const start: Date = control.getStart();
Expand All @@ -44,19 +45,19 @@ class PlotPVsImpl implements PlotPVs {
const { data } = res;

const _data = fixOutOfRangeData(data, control.getStart(), control.getEnd());
control.appendDataset(_data, optimized, diff, bins, metadata);
control.appendDataset(_data, optimized, diff, bins, color, metadata);
} catch (e) {
let msg: string;

if (e instanceof OptimizeDataError) {
msg = `Failed to retrieve optimized data for ${pv} using optimize_${bins} [${start}, ${end}]`;
await this.fetchAndInsertPV(pv, false, false, -1, metadata);
await this.fetchAndInsertPV(pv, false, false, -1, color, metadata);

console.warn(msg);
StatusDispatcher.Warning("Append PV: Fetch data", msg);
}else if (e instanceof DiffDataError) {
msg = `Failed to retrieve diff data for ${pv} using diff [${start}, ${end}]`;
await this.fetchAndInsertPV(pv, false, false, -1, metadata);
await this.fetchAndInsertPV(pv, false, false, -1, color, metadata);

console.warn(msg);
StatusDispatcher.Warning("Append PV: Fetch data", msg);
Expand All @@ -70,23 +71,23 @@ class PlotPVsImpl implements PlotPVs {
}
}

private async appendPV(pv: string, optimize?: boolean, diff?: boolean, bins = DefaultBinSize): Promise<void> {
private async appendPV(pv: string, optimize?: boolean, diff?: boolean, bins = DefaultBinSize, color?: string): Promise<void> {
const metadata = await this.getPVMetadata(pv);

await this.fetchAndInsertPV(pv, optimize, diff, bins, metadata);
await this.fetchAndInsertPV(pv, optimize, diff, bins, color, metadata);

control.updateOptimizedWarning();
control.updateDiffWarning();
control.updateURL();
}

plotPV({ name, optimize, diff, bins, updateChart }: PlotPVParams): void {
plotPV({ name, optimize, diff, bins, color, updateChart }: PlotPVParams): void {
const pvIndex = control.getPlotIndex(name);
const shouldUpdateExistingPV = pvIndex !== null;
if (shouldUpdateExistingPV) {
control.updatePlot(pvIndex);
} else {
this.appendPV(name, optimize, diff, bins);
this.appendPV(name, optimize, diff, bins, color);
}
if (updateChart === true) {
this.update();
Expand Down
1 change: 1 addition & 0 deletions src/use-cases/PlotPVs/interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export interface PlotPVParams {
name: string;
optimize: boolean;
diff: boolean;
color?: string;
bins?: number;
updateChart?: boolean;
}
Expand Down
18 changes: 12 additions & 6 deletions src/utility/Browser/impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@ export class Browser implements BrowserInterface {
let diff = false;
let bins = -1;
let pvname = str;
let color: string|null = null;
if(str.indexOf("__") !== -1){
const url_param = str.split("__")
pvname = url_param[0];
str = url_param[0];
color = url_param[1];
}

if (str.indexOf("optimized_") !== -1) {
bins = parseFloat(str.substr("optimized_".length, str.indexOf("(") + 1));
Expand All @@ -30,7 +37,7 @@ export class Browser implements BrowserInterface {
diff = true;
}

return { optimize, diff, bins, pvname };
return { optimize, diff, bins, pvname, color };
};

const createDateFromString = (str: string): Date => {
Expand Down Expand Up @@ -88,8 +95,7 @@ export class Browser implements BrowserInterface {

updateAddress({ end, start, ref, pvs }: Settings): void {
let searchString = "?";
pvs.forEach(({ bins, label, optimized, diff }) => {

pvs.forEach(({ bins, label, optimized, diff, color }) => {
let stringPV = ""

if (optimized) {
Expand All @@ -99,11 +105,11 @@ export class Browser implements BrowserInterface {
}

if (diff) {
searchString += `pv=${stringPV}_diff&`;
searchString += `pv=${stringPV}_diff`;
} else {
searchString += `pv=${stringPV}&`;
searchString += `pv=${stringPV}`;
}

searchString += `__${color}&`;
});

searchString += `from=${encodeURIComponent(start.toJSON())}&`;
Expand Down
2 changes: 2 additions & 0 deletions src/utility/Browser/interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export interface SettingsPVs {
bins: number;
optimized: boolean;
diff: boolean;
color: string;
}
export interface Settings {
start: Date;
Expand All @@ -16,6 +17,7 @@ export interface ConfigPV {
optimize: boolean;
diff: boolean;
bins: number;
color?: string;
}

export interface ConfigParameters {
Expand Down

0 comments on commit 30002c7

Please sign in to comment.