Commit b27a7f6e authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

Merge branch 'dev' into feature/toestand-global-state

parents d0ee31c0 514025ca
dev 145-dev-editor-codetype-change-from-md-to-json 149-dev-ngrams-table-sorting-fix 155-dev-export-list-as-csv 164-dev-node-write-analysis 169-dev-uniqid-removal 174-dev-add-document-rc0.x 174-dev-add-document-rc1.x 174-dev-add-document-rc2.x 174-dev-add-document-rc3.x 174-dev-add-document-rc4.x 184-dev-nlp-languages 201-dev-user-api-key-for-pubmed 203-dev-corpus-json-upload 206-dev-phylo-fixes 208-dev-phylo-search-improvements 21-dev-automated-tests 213-dev-node-user 213-dev-node-user-temp 217-dev-ngrams-sync-fix 219-memiescape-rc0.x 219-memiescape-rc1.x 224-dev-uniform-ngrams-creation 234-dev-ngrams-score 240-dev-graph-node-name-not-clickable-when-empty 242-dev-phylo-search-documents 243-dev-graph-explorer-link-filtering 262-dev-phylo-doc-search-ux-improvements 272-dev-docs-table-score 274-dev-login-page-advanced 279-dev-folder-view-action-capability 286-dev-css-fix-for-graph-height 287-dev-doc-annotation-menu 288-dev-folders-for-all-sessions 289-dev-graph-view-refresh 290-dev-design-ergo-tree-closed-node 290-dev-folder-icons-fix 291-dev-dashboard-parent-id-fix 294-dev-test 296-dev-tree-refresh-from-folders 298-dev-show-tree-in-all-views 300-dev-purescript-simple-json 301-dev-visio-integration 302-dev-access-box-node-tree-rc1.x 303-dev-chart-doc-interaction-rc1.x 303-dev-chart-doc-interaction-rc2.x 304-dev-force-atlas-flickering-fix 305-dev-sidebar-fixes 305-optim-docs-view-doc 307-dev-improve-darkster 308-dev-node-visibility-rc3.x 308-dev-order2 308-dev-subtree-folded-rc0.1 308-dev-subtree-folded-rc0.x 308-dev-subtree-folded-rc1.x 308-dev-subtree-folded-rc2.x 309-dev-chromium-condition-rc1.x 309-dev-node-icon-rc1.x 309-dev-node-icon-rc2.x 309-dev-node-icon-rc3.x 309-dev-node-icon-rc4.x 309-dev-node-icon-rc5.x 309-tree-node-add-new-node-better-suggestion 310-dev-frontend-lang 311-tree-node-list-upload-file-as-json 312-dev-export-as-zip-file 312-dev-merge-docs-blank-page 312-dev-merge-docs-blank-page-rc2.x 313-dev-popup-scroll-rc1.x 313-dev-ui-enhancement-rc1.1 313-dev-ui-enhancement-rc1.2 313-dev-ui-enhancement-rc1.3 313-dev-ui-enhancement-rc1.4 313-dev-ui-enhancement-rc1.x 314-dev-ui-enhancement-rc3.x 318-dev-corpus-fields-editeable 319-dev-input-focus-lost-on-search 322-dev-list-ids-selection 323-dev-fix-node-update-serialization 323-dev-user-email-validation 324-dev-popup-close-ui-rc0.x 326-dev-invitation-error 327-dev-async-task-fix 328-dev-document-view-filter-fix-for-cache-on-off 330-dev-minify 331-dev-corpora-from-write-nodes 332-dev-bootstrap-downgrade-rc0.x 333-dev-graph-darkster-theme-rc0.x 333-dev-graph-darkster-theme-rc1.x 333-dev-graph-darkster-theme-rc2.x 334-dev-side-document-view-rc0.x 334-dev-side-document-view-rc1.x 338-dev-csv-maplist-from-gargv3 339-dev-corpus-download 339-dev-docs-download 340-dev-ngrams-tab-rc0.x 340-dev-ngrams-tab-rc1.x 340-search-in-ngrams-table 341-dev-fix-build-instructions 342-dev-corpus-upload-loader-rc0.x 343-dev-gargantext-navigation 344-dev-fix-ngrams-search-for-multi-terms 347-dev-search-enter-fix 349-dev-tag-cloud-in-graph-explorer 350-dev-graph-search-in-forms-not-labels 351-dev-remove-reset-force-atlas-button 352-dev-tag-cloud-duplicated-fix 354-dev-graph-screenshot-fix 358-dev-add-button-fix-when-table-not-empty 359-dev-input-with-autocomplete 360-dev-batch-tagging-fix 360-dev-css-cleaning-rc0.x 362-dev-visio-frame 364-dev-graph-search-rc0.x 365-dev-graphql-folders 366-dev-nodetype-creation 367-dev-cache-search-rc0.x 369-dev-forest-tooltip 371-dev-user-profile 375-dev-docs-focus-rc0.x 375-dev-docs-focus-rc1.x 375-dev-docs-focus-rc3.x 375-dev-docs-focus-rc6.x 375-dev-docs-focus-rc7.x 375-dev-phylo-docs-rc0.x 376-dev-annuaire-contacts-page 376-dev-annuaire-debug-rc0.x 376-dev-annuaire-debug-rc1.x 376-dev-annuaire-debug-rc2.x 376-dev-annuaire-fields-fix 377-dev-fonts-terms-rc0.x 378-dev-add-sync-ngram-rc0.x 379-dev-sidebar-ui-rc0.x 379-dev-sidebar-ui-rc1.x 379-dev-sidebar-ui-rc2.x 379-dev-sidebar-ui-rc3.x 379-dev-sidebar-ui-rc4.x 379-dev-sidebar-ui-rc5.x 381-dev-graph-legend-rc0.x 381-dev-graph-legend-rc1.x 382-dev-plane-navigation 383-dev-docs-chart-update 386-387-392-dev-ui-ux-rc0.x 386-387-dev-ui-ux-rc0.x 387-dev-notebook-ui-rc0.x 391-dev-table-state 393-dev-mouse-alignment-rc0.x 395-dev-ps-0.15-update 396-dev-list-persons-in-team 397-dev-lost-password 399-dev-multiple-trees-rc0.x 401-dev-css-frame-rc0.x 403-dev-config-cache-rc0.x 404-dev-popover-close-button-fix 405-dev-lost-password-design 406-dev-board-source-rc0.x 407-dev-doc-highlighting-rc0.x 408-dev-ngrams-phylo-rc0.x 408-dev-ngrams-phylo-rc1.x 409-dev-ngrams-table-edit-and-search 410-dev-document-null-id 412-dev-graph-explorer-self-referencing-node 414-dev-nested-ngrams-rc0.x 414-dev-nested-ngrams-rc1.x 415-dev-user-description-field 416-dev-ngrams-table-search 418-dev-louvain-clustering-on-filtered-graph 419-dev-ngrams-cache-on-rc0.x 419-dev-ngrams-cache-on-rc1.x 420-dev-document-css-rc0.x 422-dev-resize-handler-rc0.x 423-dev-no-term-mode-rc0.x 423-dev-no-term-mode-rc1.x 424-dev-selected-node-rc0.x 425-dev-terms-page-reset 427-dev-modal-improvement-rc0.x 427-dev-modal-improvement-rc1.x 427-dev-modal-improvement-rc2.x 427-dev-modal-improvement-rc3.x 428-dev-profile-img-upload 429-dev-login-advanced 430-dev-doc-histogram 431-dev-lost-password-email 432-dev-modal-deactivation-rc0.x 432-dev-modal-deactivation-rc1.x 434-modal-with-chrome-browser 438-dev-team-node-creator 440-dev-maplist-modal-rc0.x 441-dev-ngrams-table-sorting-fix 445-dev-doc-upload-language 446-dev-cache-cta-rc0.x 447-448-dev-merge-rc0.x 447-448-dev-merge-rc1.x 447-dev-block-edition-rc0.x 447-dev-block-edition-rc1.x 449-dev-docs-histo-selected 450-dev-filter-histo-multiple-dates 451-dev-disable-controls-when-forceatlas-is-running 452-dev-teams-security 454-dev-fix-graphology-edge-ids 456-dev-doc-annotation-rc0.x 458-dev-dont-allow-spaces-in-doc-annotation-selection 459-dev-graph-fixes 460-dev-graph-toolbar-rc0.x 461-dev-popup-darkmode-rc0.x 463-dev-doc-edit 464-dev-disconnection-issue-rc0.x 464-dev-disconnection-issue-rc1.x 465-dev-graph-explorer-recursion-error 468-dev-ngrams-order-by 471-dev-graph-node-hidden-rc0.x 471-dev-graph-node-hidden-rc1.x 475-dev-node-team-invite 476-dev-rest-error-when-adding-ngrams 480-dev-corpus-upload-list-selection 481-dev-node-calc-upload 489-dev-graph-explorer-fixes 489-dev-grapshot-fixes 496-graph-explorer-regressions 497-dev-node-write-selection 498-dev-invite-many 500-dev-limit-on-text-length-too-small-fix 501-dev-label-shape-in-graph-explorer 506-dev-search-in-tree 509-improve-global-theme 509-improve-global-theme-2 510-dev-textflow-node-progress-bar 511-tree-on-the-right 513-dev-pin-tree 517-sendButton 518-dark-mode-labels-of-the-graph-should-be-white 520-design-logo-of-public-folder-is-not-shown 521-dev-webdriver-tests 529-graph-toolbar-add-tooltips-legends-on-buttons 530-tree-change-the-hide-tree-button-by-a-more-intuitive-toggle-button-display-the-btn-in-the-lateral-bar 536-dev-chart-component-fixes 540-search-show-api-tab 541-dev-doc-table-stars 544-dev-term-table-suggestion-fix-for-children 546-dev-ngrams-scroll-position 547-dev-ngrams-context-sidebar 548-dev-node-url-share 551-dev-annotation-fix 554-design-improve-the-position-of-the-icons 555-abstract-almost-disapear-in-graph-s-doc-view-when-there-is-too-much-authors 555-abstract-almost-disapear-in-graph-s-doc-view-when-there-is-too-much-authors-2 556-forest-tree-node-focus-find-a-way-to-focus-on-the-current-node-in-the-forest-layout-layout 560-dev-graph-add-count-of-docs 561-dev-add-document-wrong-date 562-doc-annotation-menu-selectoin 562-doc-annotation-the-selected-term-menu-selection-has-disappeared 563-dev-doc-ngrams-sync 563-dev-highlight-fixes 563-dev-highlight-fixes-tmp 565-dev-ngrams-table-click-on-child 566-node-terms-restore-a-good-display-the-main-table-cols-display-since-adding-the-show-column 567-graph-rearrange-the-graph-toolbar 568-node-content-breadcrumb-display-the-full-path-of-a-node-as-a-breadcrumb-with-each-clickable-parent 569-top-header-navbar-reorganize-to-navbar 569-top-header-navbar-reorganize-to-navbar-2 571-dev-node-search-api-fixes 571-dev-search-field-fixes 573-node-terms-popin-side-panel-styles-harmonization 576-phylo-refresh-in-phylo-params-add-a-class-active-on-buttons 577-node-docs-popin-dimensions-and-scroll-improvement 578-node-docs-on-the-refresh-dialog-set-both-as-default-and-on-documents-page-remove-2-unused-icons 579-dev-login-button-fix 580-dev-phylo-params 580-phylo-params-display-improvements 581-node-phylo-form-render-improvements 582-dev-phylo-default-behavior 587-node-options-flower-standardise-upload-and-download-buttons-order 593-dev-pubmed-api-key 594-dev-ngrams-click 594-dev-ngrams-patch-fixes 597-tobar-update-link-documentation 598-dev-fixes-to-karp-rabin-ngrams-highlight 598-dev-ngrams-patches-fixes 600-dev-share-error 600-dev-team-invite-fixes 601-slider-level-of-observation-in-phylomemies 602-corpus-from-pads-put-en-as-default-value-in-the-import-form-language-field 603-dev-istex-zip-file-upload 604-user-page-fix-the-error-message-when-the-page-loads 608-fix-breadcrumb-security-hide-items-links 609-breadcrumb-limit-the-elements-that-the-user-is-allowed-to-see-and-add-links 615-dev-highlight-fixes 616-breadcrumb-remove-unnecessary-informations 618-trim-deblank-missing-in-invitations-modal-box 619-documents-from-istex-import-authors-have-always-a-comma-prefix-even-if-there-is-only-one 622-dev-lang-fix 624-corpus-hal-remove-comment-the-hal-all-lang-choice 626-dev-external-assets 628-dev-lang-fix 629-in-document-view-show-institute-field-of-the-document 629-in-document-view-show-institute-field-of-the-document-squashed 634-node-documents-in-the-settings-popin-remove-the-upload-button 634-node-documents-in-the-settings-popin-remove-the-upload-button-2 638-tree-search-enrich-search-results-with-the-path-of-the-node 640-dev-close-modals-with-esc-keypress 641-dev-node-naming-fixes 642-dev-phylo-explorer-regression 643-export-the-phylo-in-json-and-dot-format 643-export-the-phylo-in-json-and-dot-format-2 644-tree-node-graph-update-remove-it-the-resync-picto-no-longer-launch-a-reload-it-should-open-the-dialog-box-on-the-graph-reload-form-confirmation 646-nodes-layout-minor-improvements-icons-in-tabs-titles 647-node-type-api-gql-accomodate-an-additional-field-in-the-node-see-https-gitlab-iscpif-fr-gargantext-haskell-gargantext-issues-336-to-be-able-to-display-the-ty-name-of-a-node 648-dev-graphql-breadcrumbs 655-dev-graph-explorer-search-spaces 668-phylo-on-the-exported-svg-file-fix-the-background-color-behind-the-label 669-tree-focus-temporary-hotfix-comment-the-forced-focus-forest-open-nodes-for-performances-reason 670-dev-first-tree-lighter-calls 673-dev-phylo-term-selection 674-dev-search-reload 676-csv-tsv-in-all-codebase 679-corpus-import-docs-from-selected-list-is-broken 683-dev-graph-explorer-legend 687-dev-document-star 689-dev-graph-legend-improvements 691-node-terms-in-settings-on-the-download-tab-put-json-as-default-selectbox-choice-instead-of-the-current-json-zipped 695-node-document-display-the-db-source-of-a-document-with-authors-etc 696-add-separators-between-keywords-in-phylo 698-dev-ws-host-fix 699-node-graph-display-the-graph-toolbar-by-default-il-would-make-it-possible-to-control-more-quickly-play-pause 701-dev-fix-nix-build 77-dev-search-result-type-fix 80-dev-frontend-errors 90-dev-generic-zip-file 90-dev-wos-zip-parser adinapoli/garg-375 adinapoli/issue-364 adinapoli/predictable-purescript-rev-path arturo-dev-230109-code-section-block-rc0.x arturo-dev-230109-sidebar-closing-rc0.x arturo-dev-230109-tree-select-indicator-rc0.x arturo-dev-node-term-rerendering-rc0.x arturo-dev-node-term-rerendering-rc1.x arturo-dev-node-terms-ux-rc0.x arturo-dev-node-terms-ux-rc1.x arturo-dev-react-tooltip-warning-rc0.x arturo/220414-CSS-move-nodes-rc0.x cm/gitignore-dist cm/update-corpus-button dev-269-DoorWelcome dev-301-visio-fix-suggestion dev-303-refactoring dev-503-progressBarWaitingText dev-508-clean-warnings-and-deprecated-code dev-509-improve-global-theme dev-511-tree-on-the-right dev-519-weird-behavior-of-waiting-bars dev-523-node-sharing-completions-css dev-552-home-instances-blocks-adding-logout-btn dev-593-pubmed-api-key dev-add-edge-weight-control dev-arxiv dev-bdd dev-bipartite dev-epo-integration dev-epo-patents dev-fix-for-nolist-serialization dev-fix-progress-bar dev-fix-update-node-params-list-serialization dev-folders-parent dev-frame-calc-corpus-csv-upload dev-gql-user-token dev-graph-multipartite dev-graphql dev-graphql-deriving dev-hackathon-fixes dev-hal-notebook dev-ihaskell dev-indexation dev-istex dev-legacy-csv-list-upload dev-localhost-ssl dev-merge dev-merge-bootstrap-downgrade dev-ngrams-table-search-page-flicker-fix dev-nix-bug dev-nix-upgrade dev-noHisto dev-node-calc-parser dev-openalex dev-padagraph-node dev-phylo dev-phylo-r5.x dev-phylo-rc1.x dev-phylo-rc2.x dev-phylo-rc3.x dev-phylo-rc4.x dev-ps-0.14.4 dev-purescript-0.14.3 dev-remove-all-lang dev-searx-parser dev-sidebar-visibility-rc1.x dev-sidebar-visibility-rc2.x dev-sidebar-visibility-rc3.x dev-sidebar-visibility-rc4.x dev-spago-next dev-spago-next-edge-weight dev-spago-next-with-flake dev-term-moving-fix dev-test dev-testing dev-upload-zip dev-websockets feature/toestand-global-state fix-361 fix-quote-with-space fix-update-btn fix/386 haskell-190-dev-fixes-to-framecalc-post-request install-yarn-build junk/arturo/210726-react-memo master patch-1 stable testing testing-fix 0.0.7.3.1 0.0.7.3 0.0.7.2.8 0.0.7.2.7 0.0.7.2.6 0.0.7.2.5 0.0.7.2.4 0.0.7.2.3 0.0.7.2.2 0.0.7.2.1 0.0.7.2 0.0.7.1.16 0.0.7.1.15 0.0.7.1.14 0.0.7.1.13 0.0.7.1.12 0.0.7.1.11 0.0.7.1.10 0.0.7.1.9 0.0.7.1.8 0.0.7.1.7.4 0.0.7.1.7.3 0.0.7.1.7.2 0.0.7.1.7.1 0.0.7.1.7 0.0.7.1.6.5 0.0.7.1.6.4 0.0.7.1.6.3 0.0.7.1.6.2 0.0.7.1.6.1 0.0.7.1.6 0.0.7.1.5.5 0.0.7.1.5.4 0.0.7.1.5.3 0.0.7.1.5.2 0.0.7.1.5.1 0.0.7.1.5 0.0.7.1.4 0.0.7.1.3 0.0.7.1.2 0.0.7.1.1 0.0.7.1 0.0.7 0.0.6.9.9.9.9.1 0.0.6.9.9.9.9 0.0.6.9.9.9.8.1 0.0.6.9.9.9.8 0.0.6.9.9.9.7.3 0.0.6.9.9.9.7.2.1 0.0.6.9.9.9.7.2 0.0.6.9.9.9.7.1 0.0.6.9.9.9.7 0.0.6.9.9.9.6.7.1 0.0.6.9.9.9.6.7 0.0.6.9.9.9.6.6 0.0.6.9.9.9.6.5.1 0.0.6.9.9.9.6.5 0.0.6.9.9.9.6.4 0.0.6.9.9.9.6.3 0.0.6.9.9.9.6.2 0.0.6.9.9.9.6.1 0.0.6.9.9.9.6 0.0.6.9.9.9.5 0.0.6.9.9.9.4.9.3 0.0.6.9.9.9.4.9.2 0.0.6.9.9.9.4.9.1 0.0.6.9.9.9.4.9 0.0.6.9.9.9.4.8 0.0.6.9.9.9.4.7 0.0.6.9.9.9.4.6 0.0.6.9.9.9.4.5 0.0.6.9.9.9.4.4 0.0.6.9.9.9.4.3 0.0.6.9.9.9.4.2 0.0.6.9.9.9.4.1 0.0.6.9.9.9.4 0.0.6.9.9.9.3.2 0.0.6.9.9.9.3.1 0.0.6.9.9.9.3 0.0.6.9.9.9.2 0.0.6.9.9.9.1 0.0.6.9.9.9 0.0.6.9.9.8.3.4 0.0.6.9.9.8.3.3 0.0.6.9.9.8.3.2 0.0.6.9.9.8.3.1 0.0.6.9.9.8.3 0.0.6.9.9.8.2 0.0.6.9.9.8.1 0.0.6.9.9.8 0.0.6.9.9.7.9 0.0.6.9.9.7.8 0.0.6.9.9.7.7 0.0.6.9.9.7.6.4 0.0.6.9.9.7.6.3 0.0.6.9.9.7.6.2 0.0.6.9.9.7.6.1 0.0.6.9.9.7.6 0.0.6.9.9.7.5.1 0.0.6.9.9.7.5 0.0.6.9.9.7.4 0.0.6.9.9.7.3 0.0.6.9.9.7.2 0.0.6.9.9.7.1 0.0.6.9.9.7 0.0.6.9.9.6.9 0.0.6.9.9.6.8 0.0.6.9.9.6.7 0.0.6.9.9.6.6 0.0.6.9.9.6.5 0.0.6.9.9.6.4 0.0.6.9.9.6.3 0.0.6.9.9.6.2 0.0.6.9.9.6.1 0.0.6.9.9.6 0.0.6.9.9.5.8 0.0.6.9.9.5.7 0.0.6.9.9.5.6 0.0.6.9.9.5.5 0.0.6.9.9.5.4 0.0.6.9.9.5.3 0.0.6.9.9.5.2 0.0.6.9.9.5.1 0.0.6.9.9.5 0.0.6.9.9.4.6 0.0.6.9.9.4.5 0.0.6.9.9.4.4 0.0.6.9.9.4.3 0.0.6.9.9.4.2 0.0.6.9.9.4.1 0.0.6.9.9.4 0.0.6.9.9.3.3 0.0.6.9.9.3.2 0.0.6.9.9.3.1 0.0.6.9.9.3 0.0.6.9.9.2 0.0.6.9.9.1 0.0.6.9.9 0.0.6.9.8.7.1 0.0.6.9.8.7 0.0.6.9.8.6.2 0.0.6.9.8.6.1 0.0.6.9.8.6 0.0.6.9.8.5.1 0.0.6.9.8.5 0.0.6.9.8.4 0.0.6.9.8.3 0.0.6.9.8.2.2 0.0.6.9.8.2.1 0.0.6.9.8.2 0.0.6.9.8.1 0.0.6.9.8 0.0.6.9.7.6 0.0.6.9.7.5 0.0.6.9.7.4 0.0.6.9.7.3 0.0.6.9.7.2 0.0.6.9.7.1 0.0.6.9.7 0.0.6.9.6 0.0.6.9.5 0.0.6.9.4.9 0.0.6.9.4.8 0.0.6.9.4.7 0.0.6.9.4.6 0.0.6.9.4.5 0.0.6.9.4.4 0.0.6.9.4.3 0.0.6.9.4.2 0.0.6.9.4.1 0.0.6.9.4 0.0.6.9.3 0.0.6.9.2 0.0.6.9.1 0.0.6.9.0 0.0.6.8.6 0.0.6.8.5.9.4 0.0.6.8.5.9.3 0.0.6.8.5.9.2 0.0.6.8.5.9.1 0.0.6.8.5.9 0.0.6.8.5.8 0.0.6.8.5.7 0.0.6.8.5.6 0.0.6.8.5.5 0.0.6.8.5.4 0.0.6.8.5.3 0.0.6.8.5.2 0.0.6.8.5.1 0.0.6.8.5 0.0.6.8.4 0.0.6.8.3 0.0.6.8.2 0.0.6.8.1 0.0.6.8 0.0.6.7.2 0.0.6.7.1 0.0.6.7 0.0.6.6 0.0.6.5.1 0.0.6.5 0.0.6.4 0.0.6.3 0.0.6.2 0.0.6.1 0.0.6 0.0.5.9.6 0.0.5.9.5 0.0.5.9.4 0.0.5.9.3 0.0.5.9.2 0.0.5.9.1 0.0.5.9 0.0.5.8.9.9 0.0.5.8.9.8 0.0.5.8.9.7 0.0.5.8.9.6 0.0.5.8.9.5 0.0.5.8.9.4 0.0.5.8.9.3 0.0.5.8.9.2 0.0.5.8.9.1 0.0.5.8.9 0.0.5.8.8.2 0.0.5.8.8.1 0.0.5.8.8 0.0.5.8.7.2 0.0.5.8.7.1 0.0.5.8.7 0.0.5.8.6 0.0.5.8.5.1 0.0.5.8.5 0.0.5.8.4 0.0.5.8.3 0.0.5.8.2 0.0.5.8.1 0.0.5.8 0.0.5.7.9.1 0.0.5.7.9 0.0.5.7.8 0.0.5.7.7 0.0.5.7.6 0.0.5.7.5 0.0.5.7.4 0.0.5.7.3 0.0.5.7.2 0.0.5.7.1 0.0.5.7 0.0.5.6.7 0.0.5.6.6 0.0.5.6.5 0.0.5.6.4 0.0.5.6.3 0.0.5.6.2 0.0.5.6.1 0.0.5.6 0.0.5.5.7 0.0.5.5.6 0.0.5.5.5 0.0.5.5.4 0.0.5.5.3 0.0.5.5.2 0.0.5.5.1 0.0.5.5 0.0.5.3 0.0.5.2 0.0.5.1 0.0.5 0.0.4.9.9.6 0.0.4.9.9.5 0.0.4.9.9.4 0.0.4.9.9.3 0.0.4.9.9.2 0.0.4.9.9.1 0.0.4.9.9 0.0.4.9.8 0.0.4.9.7 0.0.4.9.6 0.0.4.9.5 0.0.4.9.4 0.0.4.9.3 0.0.4.9.2 0.0.4.9.1 0.0.4.9 0.0.4.8.9 0.0.4.8.8 0.0.4.8.7 0.0.4.8.6 0.0.4.8.5 0.0.4.8.4 0.0.4.8.1 0.0.4.8 0.0.4.7.3 0.0.4.7.2 0.0.4.7.1 0.0.4.7 0.0.4.6.1 0.0.4.6 0.0.4.5 0.0.4.4 0.0.4.3 0.0.4.2 0.0.4.1 0.0.4 0.0.3.9.1 0.0.3.9 0.0.3.8.1 0.0.3.8 0.0.3.7 0.0.3.6 0.0.3.5 0.0.3.4 0.0.3.3 0.0.3.2 0.0.3.1 0.0.3 0.0.2.9.6.1 0.0.2.9.6 0.0.2.9.5 0.0.2.9.4 0.0.2.9.3
No related merge requests found
'use strict';
exports.back = function() {
return function() {
history.back();
}
}
\ No newline at end of file
module Gargantext.Components.FolderView where
import Data.Array as A
import Data.Maybe (Maybe(..), fromMaybe)
import Effect (Effect)
import Effect.Aff (Aff)
import Gargantext.Components.Forest.Tree.Node.Tools.FTree (FTree, LNode(..), NTree(..), fTreeID)
import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Prelude (Ordering, Unit, compare, pure, ($), (<$>), (<>))
import Gargantext.Routes (AppRoute(Home), SessionRoute(..), appPath, nodeTypeAppRoute)
import Gargantext.Sessions (Session, get, sessionId)
import Gargantext.Types (NodeType(..), SessionId, fldr)
import Gargantext.Utils.Reactix as R2
import Reactix as R
import Reactix.DOM.HTML as H
foreign import back :: Effect Unit
here :: R2.Here
here = R2.here "Gargantext.Components.FolderView"
type Props =
( nodeId :: Int
, session :: Session
, backFolder :: Boolean
)
data FolderStyle = FolderUp | FolderChild
folderView :: R2.Leaf Props
folderView props = R.createElement folderViewCpt props []
folderViewCpt :: R.Component Props
folderViewCpt = here.component "folderViewCpt" cpt where
cpt {nodeId, session, backFolder} _ = do
useLoader {nodeId, session, backFolder} loadFolders $
\folders -> folderViewMain {folders, nodeId, session, backFolder}
type FolderViewProps =
(
nodeId :: Int
, folders:: FTree
, session :: Session
, backFolder :: Boolean
)
folderViewMain :: Record FolderViewProps -> R.Element
folderViewMain props = R.createElement folderViewMainCpt props []
folderViewMainCpt :: R.Component FolderViewProps
folderViewMainCpt = here.component "folderViewMainCpt" cpt where
cpt {nodeId, session, backFolder, folders: (NTree (LNode {parent_id: parentId}) (folders))} _ = do
let sid = sessionId session
let foldersS = A.sortBy sortFolders folders
let children = makeFolderElements foldersS sid
let parent = makeParentFolder parentId sid backFolder
pure $ H.div {className: "folders"} $ parent <> children
makeFolderElements :: Array (NTree LNode) -> SessionId -> Array R.Element
makeFolderElements foldersS sid = makeFolderElementsMap <$> foldersS where
makeFolderElementsMap :: NTree LNode -> R.Element
makeFolderElementsMap (NTree (LNode node) _) = folder {style: FolderChild, text: node.name, nodeId: node.id, nodeType: node.nodeType, sid: sid} []
makeParentFolder :: Maybe Int -> SessionId -> Boolean -> Array R.Element
makeParentFolder (Just parentId) sid _ =
-- FIXME: The NodeType here should not be hardcoded to FolderPrivate but we currently can't get the actual NodeType
-- without performing another API call. Also parentId is never being returned by this API even when it clearly exists
[ folder {style: FolderUp, text: "..", nodeId: parentId, nodeType: FolderPrivate, sid: sid} [] ]
makeParentFolder Nothing _ true = [ H.button {className: "btn btn-primary", on: { click: back } } [ H.i { className: "fa fa-folder-open" } []
, H.br {}
, H.text ".."] ]
makeParentFolder Nothing _ _ = []
sortFolders :: FTree -> FTree -> Ordering
sortFolders a b = compare (fTreeID a) (fTreeID b)
type FolderProps =
(
style :: FolderStyle
, text :: String
, nodeType :: NodeType
, nodeId :: Int
, sid :: SessionId
)
folder :: R2.Component FolderProps
folder = R.createElement folderCpt
folderCpt :: R.Component FolderProps
folderCpt = here.component "folderCpt" cpt where
cpt {style, text, nodeId, sid, nodeType} _ = do
pure $ H.a {className: "btn btn-primary", href: "/#/" <> getFolderPath nodeType sid nodeId} [ H.i { className: icon style nodeType } []
, H.br {}
, H.text text]
icon :: FolderStyle -> NodeType -> String
icon FolderUp _ = "fa fa-folder-open"
icon _ nodeType = fldr nodeType false
getFolderPath :: NodeType -> SessionId -> Int -> String
getFolderPath nodeType sid nodeId = appPath $ fromMaybe Home $ nodeTypeAppRoute nodeType sid nodeId
backButton :: R.Element
backButton =
H.button {
className: "btn btn-primary"
, on: {click: back}
} [
H.i { className: "fa fa-arrow-left"} []
]
loadFolders :: Record Props -> Aff FTree
loadFolders {nodeId, session} = get session $ TreeFirstLevel (Just nodeId) ""
module Gargantext.Components.Nodes.Corpus where module Gargantext.Components.Nodes.Corpus where
import Gargantext.Prelude import Gargantext.Prelude (class Eq, class Show, Unit, bind, discard, pure, show, unit, ($), (+), (-), (<), (<$>), (<<<), (<>), (==), (>))
( Unit, bind, discard, pure, show, unit, compare
, ($), (+), (-), (<), (<$>), (<<<), (<>), (==), (>), class Show, class Eq, Ordering)
import Data.Argonaut (class DecodeJson, decodeJson, encodeJson) import Data.Argonaut (class DecodeJson, decodeJson, encodeJson)
import Data.Argonaut.Parser (jsonParser) import Data.Argonaut.Parser (jsonParser)
import Data.Array as A import Data.Array as A
...@@ -22,6 +20,7 @@ import Reactix as R ...@@ -22,6 +20,7 @@ import Reactix as R
import Reactix.DOM.HTML as H import Reactix.DOM.HTML as H
import Toestand as T import Toestand as T
import Gargantext.Components.FolderView as FV
import Gargantext.Components.CodeEditor as CE import Gargantext.Components.CodeEditor as CE
import Gargantext.Components.InputWithEnter (inputWithEnter) import Gargantext.Components.InputWithEnter (inputWithEnter)
import Gargantext.Components.Node (NodePoly(..), HyperdataList) import Gargantext.Components.Node (NodePoly(..), HyperdataList)
...@@ -32,10 +31,9 @@ import Gargantext.Components.Nodes.Types ...@@ -32,10 +31,9 @@ import Gargantext.Components.Nodes.Types
import Gargantext.Components.Nodes.Corpus.Types (CorpusData, Hyperdata(..)) import Gargantext.Components.Nodes.Corpus.Types (CorpusData, Hyperdata(..))
import Gargantext.Data.Array as GDA import Gargantext.Data.Array as GDA
import Gargantext.Hooks.Loader (useLoader) import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Routes (SessionRoute(NodeAPI, Children, TreeFirstLevel), AppRoute(Home), appPath, nodeTypeAppRoute) import Gargantext.Routes (SessionRoute(Children, NodeAPI))
import Gargantext.Sessions (Session, get, put, sessionId) import Gargantext.Sessions (Session, get, put, sessionId)
import Gargantext.Types (NodeType(..), AffTableResult, SessionId, fldr) import Gargantext.Types (AffTableResult, NodeType(..))
import Gargantext.Components.Forest.Tree.Node.Tools.FTree (FTree, LNode(..), NTree(..), fTreeID)
import Gargantext.Utils.Crypto as Crypto import Gargantext.Utils.Crypto as Crypto
import Gargantext.Utils.Reactix as R2 import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Toestand as T2 import Gargantext.Utils.Toestand as T2
...@@ -92,7 +90,7 @@ corpusLayoutSelectionCpt = here.component "corpusLayoutSelection" cpt where ...@@ -92,7 +90,7 @@ corpusLayoutSelectionCpt = here.component "corpusLayoutSelection" cpt where
pure $ renderContent viewType nodeId session key pure $ renderContent viewType nodeId session key
renderContent Folders nodeId session key = folderViewLoad { nodeId, session } renderContent Folders nodeId session key = FV.folderView { nodeId, session, backFolder: true }
renderContent Code nodeId session key = corpusLayoutWithKey { key, nodeId, session } renderContent Code nodeId session key = corpusLayoutWithKey { key, nodeId, session }
...@@ -172,79 +170,6 @@ corpusLayoutViewCpt = here.component "corpusLayoutView" cpt ...@@ -172,79 +170,6 @@ corpusLayoutViewCpt = here.component "corpusLayoutView" cpt
onClickAdd fieldsS _ = do onClickAdd fieldsS _ = do
T.modify_ (\fields -> List.snoc fields $ Tuple (List.length fields) defaultField) fieldsS T.modify_ (\fields -> List.snoc fields $ Tuple (List.length fields) defaultField) fieldsS
data FolderStyle = FolderUp | FolderChild
folderViewLoad :: R2.Leaf LoadProps
folderViewLoad props = R.createElement folderViewLoadCpt props []
folderViewLoadCpt :: R.Component LoadProps
folderViewLoadCpt = here.component "folderViewLoadCpt" cpt where
cpt {nodeId, session} _ = do
useLoader {nodeId, session} loadFolders $
\folders -> folderView {folders, nodeId, session}
type FolderViewProps =
(
nodeId :: Int
, folders:: FTree
, session :: Session
)
folderView :: Record FolderViewProps -> R.Element
folderView props = R.createElement folderViewCpt props []
folderViewCpt :: R.Component FolderViewProps
folderViewCpt = here.component "folderViewCpt" cpt where
cpt {nodeId, session, folders: (NTree (LNode {parent_id: parentId}) (folders))} _ = do
let sid = sessionId session
let foldersS = A.sortBy sortFolders folders
let children = makeFolderElements foldersS sid
let parent = makeParentFolder parentId sid
pure $ H.div {className: "folders"} $ parent <> children
makeFolderElements :: Array (NTree LNode) -> SessionId -> Array R.Element
makeFolderElements foldersS sid = makeFolderElementsMap <$> foldersS where
makeFolderElementsMap :: NTree LNode -> R.Element
makeFolderElementsMap (NTree (LNode node) _) = folder {style: FolderChild, text: node.name, nodeId: node.id, nodeType: node.nodeType, sid: sid} []
makeParentFolder :: Maybe Int -> SessionId -> Array R.Element
makeParentFolder (Just parentId) sid =
-- FIXME: The NodeType here should not be hardcoded to FolderPrivate but we currently can't get the actual NodeType
-- without performing another API call. Also parentId is never being returned by this API even when it clearly exists
[ folder {style: FolderUp, text: "..", nodeId: parentId, nodeType: FolderPrivate, sid: sid} [] ]
makeParentFolder Nothing _ = []
sortFolders :: FTree -> FTree -> Ordering
sortFolders a b = compare (fTreeID a) (fTreeID b)
type FolderProps =
(
style :: FolderStyle
, text :: String
, nodeType :: NodeType
, nodeId :: Int
, sid :: SessionId
)
folder :: R2.Component FolderProps
folder = R.createElement folderCpt
folderCpt :: R.Component FolderProps
folderCpt = here.component "folderCpt" cpt where
cpt {style, text, nodeId, sid, nodeType} _ = do
pure $ H.a {className: "btn btn-primary", href: "/#/" <> getFolderPath nodeType sid nodeId} [ H.i { className: icon style nodeType } []
, H.br {}
, H.text text]
icon :: FolderStyle -> NodeType -> String
icon FolderUp _ = "fa fa-folder-open"
icon _ nodeType = fldr nodeType false
getFolderPath :: NodeType -> SessionId -> Int -> String
getFolderPath nodeType sid nodeId = appPath $ fromMaybe Home $ nodeTypeAppRoute nodeType sid nodeId
type FieldsCodeEditorProps = type FieldsCodeEditorProps =
( (
...@@ -518,9 +443,6 @@ type LoadProps = ...@@ -518,9 +443,6 @@ type LoadProps =
loadCorpus' :: Record LoadProps -> Aff (NodePoly Hyperdata) loadCorpus' :: Record LoadProps -> Aff (NodePoly Hyperdata)
loadCorpus' {nodeId, session} = get session $ NodeAPI Corpus (Just nodeId) "" loadCorpus' {nodeId, session} = get session $ NodeAPI Corpus (Just nodeId) ""
loadFolders :: Record LoadProps -> Aff FTree
loadFolders {nodeId, session} = get session $ TreeFirstLevel (Just nodeId) ""
-- Just to make reloading effective -- Just to make reloading effective
loadCorpusWithReload :: { reload :: T2.Reload | LoadProps } -> Aff (NodePoly Hyperdata) loadCorpusWithReload :: { reload :: T2.Reload | LoadProps } -> Aff (NodePoly Hyperdata)
loadCorpusWithReload {nodeId, session} = loadCorpus' {nodeId, session} loadCorpusWithReload {nodeId, session} = loadCorpus' {nodeId, session}
......
...@@ -13,6 +13,7 @@ import Reactix.DOM.HTML as H ...@@ -13,6 +13,7 @@ import Reactix.DOM.HTML as H
import Toestand as T import Toestand as T
import Gargantext.Components.Node (NodePoly(..)) import Gargantext.Components.Node (NodePoly(..))
import Gargantext.Components.FolderView as FV
import Gargantext.Hooks.Loader (useLoader) import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.Routes (SessionRoute(NodeAPI)) import Gargantext.Routes (SessionRoute(NodeAPI))
...@@ -104,13 +105,16 @@ frameLayoutViewCpt = here.component "frameLayoutView" cpt ...@@ -104,13 +105,16 @@ frameLayoutViewCpt = here.component "frameLayoutView" cpt
, nodeType , nodeType
, reload , reload
, session } _ = , session } _ =
pure $ H.div { className : "frame" pure $ H.div{} [
FV.backButton
, H.div { className : "frame"
, rows: "100%,*" } , rows: "100%,*" }
[ H.iframe { src: hframeUrl nodeType base frame_id [ H.iframe { src: hframeUrl nodeType base frame_id
, width: "100%" , width: "100%"
, height: "100%" , height: "100%"
} [] } []
] ]
]
type LoadProps = ( nodeId :: Int type LoadProps = ( nodeId :: Int
, session :: Session ) , session :: Session )
......
module Gargantext.Components.Nodes.Home where module Gargantext.Components.Nodes.Home where
import Gargantext.Prelude
import Data.Array as Array import Data.Array as Array
import Data.Maybe (fromJust)
import Data.Newtype (class Newtype) import Data.Newtype (class Newtype)
import Effect (Effect) import Effect (Effect)
import Reactix as R
import Reactix.DOM.HTML as H
import Routing.Hash (setHash)
import Toestand as T
import Gargantext.Components.Data.Landing (BlockText(..), BlockTexts(..), Button(..), LandingData(..)) import Gargantext.Components.Data.Landing (BlockText(..), BlockTexts(..), Button(..), LandingData(..))
import Gargantext.Components.FolderView as FV
import Gargantext.Components.Lang (LandingLang(..)) import Gargantext.Components.Lang (LandingLang(..))
import Gargantext.Components.Lang.Landing.EnUS as En import Gargantext.Components.Lang.Landing.EnUS as En
import Gargantext.Components.Lang.Landing.FrFR as Fr import Gargantext.Components.Lang.Landing.FrFR as Fr
import Gargantext.Components.Nodes.Home.Public (renderPublic) import Gargantext.Components.Nodes.Home.Public (renderPublic)
import Gargantext.License (license) import Gargantext.License (license)
import Gargantext.Prelude -- (Unit, map, pure, unit, void, ($), (<>), (*>))
import Gargantext.Sessions (Sessions) import Gargantext.Sessions (Sessions)
import Gargantext.Sessions as Sessions import Gargantext.Sessions as Sessions
import Gargantext.Sessions.Types (Session(..))
import Gargantext.Utils.Reactix as R2 import Gargantext.Utils.Reactix as R2
import Partial.Unsafe (unsafePartial)
import Reactix as R
import Reactix.DOM.HTML as H
import Routing.Hash (setHash)
import Toestand as T
here :: R2.Here here :: R2.Here
here = R2.here "Gargantext.Components.Nodes.Home" here = R2.here "Gargantext.Components.Nodes.Home"
...@@ -87,7 +91,8 @@ joinButtonOrTutorial :: forall e. Sessions -> (e -> Effect Unit) -> R.Element ...@@ -87,7 +91,8 @@ joinButtonOrTutorial :: forall e. Sessions -> (e -> Effect Unit) -> R.Element
joinButtonOrTutorial sessions click = joinButtonOrTutorial sessions click =
if Sessions.null sessions if Sessions.null sessions
then joinButton click then joinButton click
else tutorial -- sessions is not empty
else tutorial {session: unsafePartial $ fromJust $ Array.head $ Sessions.unSessions sessions}
joinButton :: forall e. (e -> Effect Unit) -> R.Element joinButton :: forall e. (e -> Effect Unit) -> R.Element
joinButton click = joinButton click =
...@@ -131,10 +136,18 @@ summary = ...@@ -131,10 +136,18 @@ summary =
, H.ol {} (map toSummary tutos) ] ] , H.ol {} (map toSummary tutos) ] ]
toSummary (Tuto x) = H.li {} [ H.a {href: "#" <> x.id} [ H.text x.title ]] toSummary (Tuto x) = H.li {} [ H.a {href: "#" <> x.id} [ H.text x.title ]]
tutorial :: R.Element tutorial :: R2.Leaf (session :: Session)
tutorial = tutorial props = R.createElement tutorialCpt props []
H.div { className: "mx-auto container" }
[ H.h1 {} [H.text "Welcome!"] tutorialCpt :: R.Component (session :: Session)
tutorialCpt = here.component "tutorial" cpt where
cpt {session: session@(Session {treeId})} _ = do
let nodeId = treeId
pure $ H.div { className: "mx-auto container" }
[ H.div {className: "d-flex justify-content-center"}
[FV.folderView {session, nodeId, backFolder: false}]
, H.h1 {} [H.text "Welcome!"]
, H.h2 {} [H.text "For easy start, just watch the tutorials"] , H.h2 {} [H.text "For easy start, just watch the tutorials"]
, summary , summary
, H.h3 {} [H.text "Tutorial resources"] , H.h3 {} [H.text "Tutorial resources"]
......
...@@ -10,6 +10,7 @@ import Toestand as T ...@@ -10,6 +10,7 @@ import Toestand as T
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.Components.FolderView as FV
import Gargantext.Components.Table.Types (ColumnName, OrderBy, OrderByDirection(..), Params, Props, TableContainerProps, columnName) import Gargantext.Components.Table.Types (ColumnName, OrderBy, OrderByDirection(..), Params, Props, TableContainerProps, columnName)
import Gargantext.Components.Nodes.Lists.Types as NT import Gargantext.Components.Nodes.Lists.Types as NT
import Gargantext.Components.Search (SearchType(..)) import Gargantext.Components.Search (SearchType(..))
...@@ -63,7 +64,9 @@ tableHeaderLayoutCpt = here.component "tableHeaderLayout" cpt ...@@ -63,7 +64,9 @@ tableHeaderLayoutCpt = here.component "tableHeaderLayout" cpt
cacheState' <- T.useLive T.unequal cacheState cacheState' <- T.useLive T.unequal cacheState
pure $ R.fragment pure $ R.fragment
[ R2.row [ R2.row [FV.backButton]
,
R2.row
[ H.div {className: "col-md-3"} [ H.h3 {} [H.text title] ] [ H.div {className: "col-md-3"} [ H.h3 {} [H.text title] ]
, H.div {className: "col-md-9"} , H.div {className: "col-md-9"}
[ H.hr {style: {height: "2px", backgroundColor: "black"}} ] [ H.hr {style: {height: "2px", backgroundColor: "black"}} ]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment