diff --git a/src/message/__init__.py b/src/message/__init__.py index 268922c..0709be3 100644 --- a/src/message/__init__.py +++ b/src/message/__init__.py @@ -1,7 +1,7 @@ from message.simple_messages import NoReset, Reset, ModalNotOkClose, ClickMessage, DataChgClickMessage, KeyboardPress from message.translation_edit import EditTranslation, MoveRight, MoveLeft, BinTranslation from message.show_messages import ShowEntryLabelsEdit, ShowEditTranslation, ShowSenseLabelEdit, ShowSenseDefinitionEdit, ShowCommentEdit, ShowAddTranslation, ShowExampleEdit, ShowVariantsEdit, ShowRelatedEntriesEdit -from message.simple_edits import EditSenseLabel, EditSenseDefinition, EditComment, AddSenseLabel, AddSense, AddExampleTranslation, DoChosenExamples, AddToLabelList, AddToGenericList, EditVariants, EditRelatedEntries, EditEntryLabels +from message.simple_edits import EditSenseLabel, EditSenseDefinition, EditComment, AddSenseLabel, AddSense, AddExampleTranslation, DoChosenExamples, AddToLabelList, AddToGenericList, EditVariants, EditRelatedEntries, EditEntryLabels, ExampleClusterEdit from message.show_menu import ShowTranslationMenu, ShowSenseMenu, ShowExampleMenu from message.sense_edit import SenseMoveUp, SenseMoveDown, SenseBin from message.example_edit import ExampleMoveUp, ExampleMoveDown, ExampleBin, ExampleRoleChange, ExampleComponentAdd, ExampleComponentRemove, EditExampleText, ToggleExamples diff --git a/src/message/simple_edits.py b/src/message/simple_edits.py index 0cb2a54..f3ce15e 100644 --- a/src/message/simple_edits.py +++ b/src/message/simple_edits.py @@ -100,4 +100,9 @@ class EditEntryLabels(Message): model.entry.labels = labels +class ExampleClusterEdit(Message): + def update_model(self, model): + example = self.get_arg(0, Example) + cluster = self.get_arg(1, int) + example.set_cluster(cluster) diff --git a/src/model/sense.py b/src/model/sense.py index 6e0ec75..6c45824 100644 --- a/src/model/sense.py +++ b/src/model/sense.py @@ -27,19 +27,20 @@ class Sense(Editable): sense_xml.querySelectorAll("exampleContainerList exampleContainer")] # set limit for example cluster - self.reserved_example = max(cluster_mappings.values()) + 1 - cluster_min = self.reserved_example + 1 + cluster_min =max(cluster_mappings.values()) + 2 + + self._original_examples = set([cluster_min - 1]) + self._original_examples = set(self.example_clusters()) def merge_labels(self): return ", ".join(val for _, val in self.labels) def example_clusters(self): - result = set() + result = self._original_examples for ex in self.examples: cluster = ex.get_cluster() if cluster is not None: result.add(cluster) - result.add(self.reserved_example) return sorted(result) diff --git a/src/view/utils.py b/src/view/utils.py index e2651eb..00bcee0 100644 --- a/src/view/utils.py +++ b/src/view/utils.py @@ -1,18 +1,25 @@ from export import export_to_xml from browser import window from lib.snabbdom import h +import message NUM2STR = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" def show_toggle_cluster_buttons(sense, example): + cls = example.get_cluster() + if cls is None: + return [] + result = [] for opt in sense.example_clusters(): tag = "input.cluster-list-button" - if opt == example.get_cluster(): + if opt == cls: tag += ".cluster-button-checked" - result.append(h(tag, {"attrs": {"value": NUM2STR[opt], "type": "button"}}, [])) + result.append(h(tag, + {"attrs": {"value": NUM2STR[opt], "type": "button"}, + "on": {"click": message.msg(message.ExampleClusterEdit(example, opt))}}, [])) return result