diff --git a/entries/static/entries/js/unification.js b/entries/static/entries/js/unification.js index 512cd6292d42ced11533aa0ddcbee837a23d3a75..9dd53ad6cff611cdac66f4a4db47609d163dc3e7 100644 --- a/entries/static/entries/js/unification.js +++ b/entries/static/entries/js/unification.js @@ -1,46 +1,5 @@ "use strict"; -function get_unified_frame(unified_frame_id, related) { - check_import_status(); - clear_entry(); - show_entry_spinners(); - //const data = { 'forms' : serialize_forms($('#main-form')), 'entry' : entry_id }; - const data = { 'unified_frame_id' : unified_frame_id, 'no_filters' : related }; - $.ajax({ - type : 'post', - url : '/' + lang + '/unifier/get_unified_frame/', - dataType : 'json', - data : data, - timeout : 60000, - success : function(response) { - curr_entry = unified_frame_id; - curr_no_filters = related; - clear_info(); - curr_alternations = response.alternations; - curr_realisation_phrases = response.realisation_phrases; - curr_realisation_descriptions = response.realisation_descriptions; - curr_examples = response.examples; - curr_examples_by_id = Object(); - for (let i in curr_examples) { - curr_examples_by_id[curr_examples[i].id] = curr_examples[i]; - } - // show_syntax(response.subentries); - show_unified_frame(response.unified_frame, response.frames) - show_unified_frame_lexical_units(response.frames) - fulfill_slowal_frames_arguments_with_empty_elems(response.unified_frame, response.frames) - show_semantics_unified_view(response.frames, response.subentries); - // show_unmatched_examples(); - - // tooltips with meaning gloss - activate_tooltips($('#semantics-frames-pane')); - update_last_visited(response.last_visited); - }, - error: function(request, errorType, errorMessage) { - show_error(errorType + ' (' + errorMessage + ')'); - } - }); -} - function slowal_frames2selecional_preferencies(unified_frame, slowal_frames) { const unified_argument_2_selecional_preferencies = {} diff --git a/entries/static/entries/js/utils.js b/entries/static/entries/js/utils.js index 694904e3a929fa26be0780e87fb24e0f8dd2a6b7..18faac7196d0a272d84bdb8e8c1f34d0ebbf219a 100644 --- a/entries/static/entries/js/utils.js +++ b/entries/static/entries/js/utils.js @@ -30,13 +30,3 @@ function normalizeFormData(data) { } } } - -function indexOfId(array, id) { - var i; - for (i = 0; i < array.length; i++) { - if (array[i].id == id) { - return i; - } - } - return -1; -} diff --git a/entries/templates/entries_base.html b/entries/templates/entries_base.html index 2df1529b641a36758ffc1203af32ba0a50385d8d..b46559a6c66c07047c2d29e5564328bc95d7595a 100644 --- a/entries/templates/entries_base.html +++ b/entries/templates/entries_base.html @@ -22,7 +22,6 @@ <script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.12.1/sc-2.0.3/datatables.min.js"></script> <script type="text/javascript" src="https://cdn.datatables.net/plug-ins/1.12.1/features/scrollResize/dataTables.scrollResize.min.js"></script> <script src="{% static 'common/js/csrf.js' %}"></script> - <!--script src="{% static 'entries/js/panels.js' %}"></script--> <script src="{% static 'entries/js/forms.js' %}"></script> <script src="{% static 'entries/js/utils.js' %}"></script> <script src="{% static 'entries/js/entries.js' %}"></script> diff --git a/entries/templates/test.html b/entries/templates/test.html deleted file mode 100644 index c3c96aaf6ff5973fc2d3e7260cd688dc917ea496..0000000000000000000000000000000000000000 --- a/entries/templates/test.html +++ /dev/null @@ -1,23 +0,0 @@ -{% load static %} - -<!doctype html> - -{% load static %} - -<html lang="pl"> -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> - <link rel="icon" href="{% static 'common/favicon.ico' %}"> - <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css"> - <link rel="stylesheet" type="text/css" href="https://bootswatch.com/4/lux/bootstrap.min.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> - <!--might be needed for resizeable panels, causes errors if included after Popper--> - <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> - <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> - <script src="{% static 'entries/js/entries.js' %}"></script> -</head> - -<body> - <input class="regex-autocomplete" data-autocomplete="phrasetype"> -</body> diff --git a/entries/views.py b/entries/views.py index 075096de395fa27c66541a5d3f9ce30e9783c9a4..5430b0109f26927229d996ab1e9025de26be55b6 100644 --- a/entries/views.py +++ b/entries/views.py @@ -47,10 +47,6 @@ from .phrase_descriptions.descriptions import position_prop_description MAX_LAST_VISITED = 10 -# TODO remove!!! -#def test(request): -# return render(request, 'test.html', {}) - @login_required def entries(request): # TODO make this automatic by subclassing/configuring session object diff --git a/frontend/src/components/unification/Unification/LexicalUnitEdit.vue b/frontend/src/components/unification/Unification/LexicalUnitEdit.vue index 948de34d7545667f528127f8bc677f5286c9ff4b..6db0f6bab5e21eb94f95ca6bc7c1f2bd1778eb1b 100644 --- a/frontend/src/components/unification/Unification/LexicalUnitEdit.vue +++ b/frontend/src/components/unification/Unification/LexicalUnitEdit.vue @@ -28,7 +28,7 @@ Object.assign(LexicalUnitEdit, { active_unified_frame_argument: null, slowal_frames2selecional_preferencies_mapping: {}, lexical_units: [], - img_prefix: String, + img_prefix: window.STATIC_URL, frames: [], right_pane_tabs: [ {id: 'schemata', label: gettext('Schematy')}, diff --git a/frontend/src/components/unification/Unification/Unification.vue b/frontend/src/components/unification/Unification/Unification.vue new file mode 100644 index 0000000000000000000000000000000000000000..926824132d8e764fd7a0e554ff4c370be9639133 --- /dev/null +++ b/frontend/src/components/unification/Unification/Unification.vue @@ -0,0 +1,76 @@ +<script> +import UnificationSwitchableList from "./UnificationSwitchableList.vue"; +import UnificationRightPane from "./UnificationRightPane.vue"; + +export default { + data () { + return { + entryId: null, + lexicalUnitId: null, + unifiedFrameId: null, + gettext: window.gettext, + unificationEntriesListRefreshKey: 1, + }; + }, + components: {UnificationSwitchableList, UnificationRightPane}, + methods: { + lexicalUnitSelected (entryId, lexicalUnitId) { + this.entryId = entryId; + this.lexicalUnitId = lexicalUnitId; + }, + unifiedFrameSelected (unifiedFrameId, entryId, lexicalUnitId) { + this.unifiedFrameId = unifiedFrameId; + this.entryId = entryId; + this.lexicalUnitId = lexicalUnitId; + }, + refreshEntriesList() { + this.unificationEntriesListRefreshKey++; + } + }, + setup() { + const lexicalUnit = new URL(location.href).searchParams.get('lexical_unit_id'); + const entryId = new URL(location.href).searchParams.get('entry_id'); + return { + initialLexicalUnitId: parseInt(lexicalUnit), + initialEntryId: parseInt(entryId), + }; + }, + mounted () { + this.unifiedFrameSelected(window.initialUnifiedFrameId); + $('#entries-list').length && Split(['#entries-list', '#entry-display'], { + sizes: [20, 80], + gutterSize: 4, + minSize: 10, + elementStyle: (dimension, size, gutterSize) => { + return { + 'flex-basis': 'calc(' + size + '% - ' + gutterSize + 'px)' + } + }, + }); + }, +}; +</script> + +<template> + <div id="entries-list" class="col h-100 w-100 pr-0 overflow-hidden"> + <div id="entries-list-div" class="col p-0 h-100 w-100 overflow-hidden"> + <unification-switchable-list + :unificationEntriesListRefreshKey="unificationEntriesListRefreshKey" + :initialLexicalUnitId="lexicalUnitId ? lexicalUnitId : initialLexicalUnitId" + :initialEntryId="entryId ? entryId : initialEntryId" + @lexical-unit-selected="lexicalUnitSelected" + @unified-frame-selected="unifiedFrameSelected" + /> + </div> + </div> + <div id="entry-display" class="col h-100 p-0 overflow-hidden"> + <unification-right-pane + ref="unificationRightPane" + :entryId="entryId" + :lexicalUnitId="lexicalUnitId" + :initialUnifiedFrameId="unifiedFrameId" + @refresh-entries-list="refreshEntriesList" + /> + </div> +</template> + diff --git a/frontend/src/components/unification/shared/frame-components/ExamplesComponent.vue b/frontend/src/components/unification/shared/frame-components/ExamplesComponent.vue index 6e9b4ea1ec4e5cf550564c6d16f83741c4f167cd..8327a47583a297a049600290da0d0926b63c25e9 100644 --- a/frontend/src/components/unification/shared/frame-components/ExamplesComponent.vue +++ b/frontend/src/components/unification/shared/frame-components/ExamplesComponent.vue @@ -13,7 +13,7 @@ export default { components: { InfoTooltip }, data() { return { - img_prefix: String + img_prefix: window.STATIC_URL } }, emits: ['exampleSelected'], @@ -87,4 +87,4 @@ export default { </tbody> </table> <p v-else class="mx-1 my-1" id="semantics-no-examples" style="display: none;">Brak przykładów</p> -</template> \ No newline at end of file +</template> diff --git a/frontend/src/components/unification/shared/frame-components/SemanticsSchemataComponent.vue b/frontend/src/components/unification/shared/frame-components/SemanticsSchemataComponent.vue index ce3604aafa0603f899bb618a450a3cb062b9e614..b6bfb59cfb59c49b8ebb222b6751e65c01a6b70a 100644 --- a/frontend/src/components/unification/shared/frame-components/SemanticsSchemataComponent.vue +++ b/frontend/src/components/unification/shared/frame-components/SemanticsSchemataComponent.vue @@ -14,7 +14,7 @@ export default { emits: ['schemataSelected'], data() { return { - img_prefix: String + img_prefix: window.STATIC_URL } }, methods: { diff --git a/frontend/src/components/unification/shared/frame-components/SlowalFrameComponent.vue b/frontend/src/components/unification/shared/frame-components/SlowalFrameComponent.vue index 12a62831f13702a151b9709ae32bed7b59e9f354..88361c58740e99354d1eed2797eab543f702853e 100644 --- a/frontend/src/components/unification/shared/frame-components/SlowalFrameComponent.vue +++ b/frontend/src/components/unification/shared/frame-components/SlowalFrameComponent.vue @@ -10,7 +10,7 @@ export default { emits: ['frameSelectionChanged'], data() { return { - img_prefix: String, + img_prefix: window.STATIC_URL, } }, methods: { diff --git a/frontend/src/main.js b/frontend/src/main.js index 309a1cbddbf44f7c4f33072a9279bab2e5f0154e..f0fbbbc5d721560d7c8e27ab8478693c56b03d01 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -16,5 +16,12 @@ const router = createRouter({ }); const app = createApp(App); +let mounted = false; app.use(router); -app.mount('#vue-app'); + +window.update_entries = function () { + if (!mounted) { + app.mount('#vue-app'); + mounted = true; + } +}