Skip to content

Commit

Permalink
Update aliases for selected eva reader
Browse files Browse the repository at this point in the history
  • Loading branch information
brandonzhu09 committed Aug 12, 2024
1 parent 752f6fa commit 5a44885
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 10 deletions.
2 changes: 2 additions & 0 deletions src/evagram/website/backend/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@ class Meta:
model = Experiments
fields = ['key', 'value', 'content', 'experiment_id', 'experiment_name', 'create_date']


class CycleTimeSerializer(serializers.BaseSerializer):
def to_representation(self, instance):
instance['key'] = instance['begin_cycle_time']
instance['value'] = instance['begin_cycle_time']
instance['content'] = instance['begin_cycle_time']
return instance


class ReaderSerializer(serializers.ModelSerializer):
key = serializers.ModelField(model_field=Readers()._meta.get_field('reader_id'))
value = serializers.ModelField(model_field=Readers()._meta.get_field('reader_id'))
Expand Down
1 change: 1 addition & 0 deletions src/evagram/website/backend/api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@
path("update-observation-option/", views.update_observation_option),
path("update-variable-option/", views.update_variable_option),
path("update-group-option/", views.update_group_option),
path("get-reader-aliases/", views.get_reader_aliases),
]
45 changes: 39 additions & 6 deletions src/evagram/website/backend/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ def update_cycle_time_option(request):
except ObjectDoesNotExist as e:
return Response({"error": str(e)}, status=404)


@api_view(['GET'])
def update_reader_option(request):
try:
Expand All @@ -213,6 +214,7 @@ def update_reader_option(request):
except ObjectDoesNotExist as e:
return Response({"error": str(e)}, status=404)


@api_view(['GET'])
def update_observation_option(request):
try:
Expand All @@ -225,7 +227,10 @@ def update_observation_option(request):
"variables": [],
"variablesMap": {}
}
data["variables"] = get_variables_by_observation(experiment_id, cycle_time, reader_id, observation_id)
data["variables"] = get_variables_by_observation(experiment_id,
cycle_time,
reader_id,
observation_id)
variablesMap = {}
for variable in data["variables"]:
variablesMap[variable['variable_name']] = variablesMap.get(
Expand Down Expand Up @@ -276,7 +281,11 @@ def update_variable_option(request):
"groups": [],
"channel": channel
}
data["groups"] = get_groups_by_variable(experiment_id, cycle_time, reader_id, observation_id, variable_id)
data["groups"] = get_groups_by_variable(experiment_id,
cycle_time,
reader_id,
observation_id,
variable_id)
return Response(data)

except AssertionError as e:
Expand All @@ -294,6 +303,7 @@ def update_variable_option(request):
except ObjectDoesNotExist as e:
return Response({"error": str(e)}, status=404)


@api_view(['GET'])
def update_group_option(request):
try:
Expand All @@ -306,13 +316,18 @@ def update_group_option(request):
group_id = request.GET["group_id"]
Groups.objects.get(pk=group_id)

variable_id = Variables.objects.get(variable_name=variable_name,
variable_id = Variables.objects.get(variable_name=variable_name,
channel=None if channel == "null" else channel)

data = {
"plot_types": []
}
data["plot_types"] = get_plot_types_by_group(experiment_id, cycle_time, reader_id, observation_id, variable_id, group_id)
data["plot_types"] = get_plot_types_by_group(experiment_id,
cycle_time,
reader_id,
observation_id,
variable_id,
group_id)
return Response(data)

except ValueError as e:
Expand All @@ -326,6 +341,20 @@ def update_group_option(request):
return Response({"error": str(e)}, status=404)


@api_view(['GET'])
def get_reader_aliases(request):
reader_id = request.GET["reader_id"]
data = {
"observation_name": Aliases.objects.get(reader_id=reader_id,
alias_name='Observation').alias_value,
"variable_name": Aliases.objects.get(reader_id=reader_id,
alias_name='Variable').alias_value,
"group_name": Aliases.objects.get(reader_id=reader_id,
alias_name='Group').alias_value,
}
return Response(data)


def get_owners():
queryset = Owners.objects.all()
serializer = OwnerSerializer(queryset, many=True)
Expand Down Expand Up @@ -365,7 +394,8 @@ def get_variables_by_observation(pk_experiment, cycle_time, pk_reader, pk_observ
queryset = Plots.objects.filter(experiment=pk_experiment,
begin_cycle_time=cycle_time,
reader=pk_reader,
observation=pk_observation).values_list("variable_id").distinct()
observation=pk_observation
).values_list("variable_id").distinct()
variables = Variables.objects.filter(variable_id__in=queryset)
serializer = VariableSerializer(variables, many=True)
return serializer.data
Expand All @@ -381,7 +411,9 @@ def get_groups_by_variable(pk_experiment, cycle_time, pk_reader, pk_observation,
serializer = GroupSerializer(groups, many=True)
return serializer.data

def get_plot_types_by_group(pk_experiment, cycle_time, pk_reader, pk_observation, pk_variable, pk_group):

def get_plot_types_by_group(pk_experiment, cycle_time, pk_reader, pk_observation, pk_variable,
pk_group):
queryset = Plots.objects.filter(experiment=pk_experiment,
begin_cycle_time=cycle_time,
reader=pk_reader,
Expand All @@ -391,6 +423,7 @@ def get_plot_types_by_group(pk_experiment, cycle_time, pk_reader, pk_observation
serializer = PlotTypeSerializer(queryset, many=True)
return serializer.data


def get_variable_id(variable_name, channel):
# lookup variable id by variable name and channel
channel = None if channel == "null" else channel
Expand Down
2 changes: 1 addition & 1 deletion src/evagram/website/backend/backend/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'test_evagram',
'NAME': 'evagram',
'USER': 'postgres',
'PORT': 5432,
'HOST': '127.0.0.1',
Expand Down
32 changes: 29 additions & 3 deletions src/evagram/website/frontend/src/Components/PlotMenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ function PlotMenu() {
const [selectedGroup, setSelectedGroup] = useState("");
const [selectedPlotType, setSelectedPlotType] = useState("");

const [observationAlias, setObservationAlias] = useState("Observation");
const [variableAlias, setVariableAlias] = useState("Variable");
const [groupAlias, setGroupAlias] = useState("Group");

const [toggleChannel, setToggleChannel] = useState(false);

const didMount = useRef(false);
Expand Down Expand Up @@ -132,6 +136,7 @@ function PlotMenu() {
setToggleChannel(false);
setGroups([]);
setPlotTypes([]);
updateReaderAliases(e.target.value);
if (e.target.value !== "null") {
axios
.get("http://localhost:8000/api/update-reader-option/", {
Expand Down Expand Up @@ -242,6 +247,27 @@ function PlotMenu() {
}
};

const updateReaderAliases = (reader_id) => {
if (reader_id === "null") {
setObservationAlias("Observation");
setVariableAlias("Variable");
setGroupAlias("Group");
} else {
axios
.get("http://localhost:8000/api/get-reader-aliases/", {
params: {
reader_id: reader_id,
},
})
.then((response) => {
setObservationAlias(response.data["observation_name"]);
setVariableAlias(response.data["variable_name"]);
setGroupAlias(response.data["group_name"]);
})
.catch((error) => console.log(error));
}
};

return (
<div id="menu_container" className={styles.menu_container}>
<div className={styles.dropdown_container}>
Expand Down Expand Up @@ -270,21 +296,21 @@ function PlotMenu() {
updateOptionCallback={updateOptionsByReader}
objects={readers}
/>
<label>Observation:</label>
<label>{observationAlias}:</label>
<DropdownList
id="observation_menu"
updateOptionCallback={updateOptionsByObservation}
objects={observations}
/>
<label>Variable:</label>
<label>{variableAlias}:</label>
<VariableDropdownList
id="variable_menu"
updateOptionsByVariableName={updateOptionsByVariableName}
updateOptionsByChannel={updateOptionsByChannel}
variablesMap={variablesMap}
toggleChannel={toggleChannel}
/>
<label>Group:</label>
<label>{groupAlias}:</label>
<DropdownList
id="group_menu"
updateOptionCallback={updateOptionsByGroup}
Expand Down

0 comments on commit 5a44885

Please sign in to comment.