Skip to content

Feature/model ged#625

Open
LrxGaelle wants to merge 15 commits intodevelopfrom
feature/model-ged
Open

Feature/model ged#625
LrxGaelle wants to merge 15 commits intodevelopfrom
feature/model-ged

Conversation

@LrxGaelle
Copy link
Member

@LrxGaelle LrxGaelle commented Feb 25, 2026

https://platform-dev-model-ged.bimdata.io

Description

This PR introduces two improvements in the GED:

  1. Replace type sorting with type filtering
  2. Add create models, create photospheres, and remove models actions based on multi-selection

Types of changes

  • Bug fix (non-breaking change which fixes an issue) DON'T FORGET TO SEND THE PR INTO RELEASE
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist

  • My code follows the code style of this project.
  • I have tested my code.
  • My code add or change i18n tokens
  • I want to run the tests for the commits of this PR

@LrxGaelle LrxGaelle self-assigned this Feb 25, 2026
@LrxGaelle LrxGaelle changed the title [WIP] Feature/model ged Feature/model ged Feb 27, 2026
@LrxGaelle LrxGaelle removed the request for review from NicolasRichel February 27, 2026 12:59
@LrxGaelle LrxGaelle changed the title Feature/model ged [WIP] Feature/model ged Feb 27, 2026
@LrxGaelle LrxGaelle changed the title [WIP] Feature/model ged Feature/model ged Feb 27, 2026
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the GED files UI to replace “type” sorting with “type” filtering, and adds multi-selection actions to create models/photospheres or remove models.

Changes:

  • Replace “type” column sorting with filtering in folder and all-files tables, and compute a displayable type value for filtering.
  • Add multi-selection actions in the files action bar and implement bulk create-model/create-photosphere/remove-model flows in FilesManager.
  • Add i18n tokens for plural notifications and model/photosphere labels, and display model/photosphere info in the filename cell.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
src/i18n/lang/fr.json Adds new FileNameCell labels and plural/bulk notifications in French.
src/i18n/lang/en.json Adds new FileNameCell labels and plural/bulk notifications in English.
src/components/specific/files/folder-table/columns.js Switches “type” column from sortable to filterable.
src/components/specific/files/folder-table/FoldersTable.vue Feeds formatted rows (with computed type) to enable “type” filtering.
src/components/specific/files/files-table/file-name-cell/FileNameCell.vue Adds model/photosphere indicator tooltip/icon and related logic.
src/components/specific/files/files-manager/files-action-bar/FilesActionBar.vue Adds bulk actions (create models/photospheres, remove models) for multi-selection.
src/components/specific/files/files-manager/FilesManager.vue Implements bulk create/remove handlers and loading state propagation.
src/components/specific/files/all-files-table/columns.js Switches “type” column to filterable (removes sort function).
src/components/specific/files/all-files-table/AllFilesTable.vue Adds type filter UI, improves selection handling, and formats rows to include a computed type.
src/components/specific/files/all-files-table/AllFilesTable.scss Adds missing positioning styling for the “type” header/filter container.
Comments suppressed due to low confidence (3)

src/components/specific/files/all-files-table/AllFilesTable.vue:330

  • When fileExtension(file.name) returns an empty string (no extension), the current logic produces type: "" (because optional chaining still calls replace on ""). Add an explicit fallback so extensionless documents show t("t.file") (and folders show t("t.folder")).
            : file.name
              ? fileExtension(file.name)?.replace(".", "").toUpperCase()
              : t("t.file"),

src/components/specific/files/all-files-table/AllFilesTable.vue:371

  • The header checkbox uses a length equality check against displayedListFiles. With filters, selection may contain items not currently displayed, which forces an indeterminate state even if all displayed rows are selected. Compute this by checking whether every displayedListFiles item is selected (by id) instead of comparing lengths.
    const mainSelectionCheckboxValue = computed(() => {
      if (props.selection.length === 0) {
        return false;
      } else if (props.selection.length === displayedListFiles.value.length) {
        return true;

src/components/specific/files/files-manager/files-action-bar/FilesActionBar.vue:96

  • isModel is imported but never used in this component. Removing the unused import will avoid lint/build warnings and keep the module dependencies accurate.
import { computed } from "vue";
import { useToggle } from "../../../../../composables/toggle.js";
import { useUser } from "../../../../../state/user.js";
import { isFolder } from "../../../../../utils/file-structure.js";
import { isConvertible, isConvertibleToPhotosphere, isModel } from "../../../../../utils/models.js";

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@LrxGaelle LrxGaelle requested a review from NicolasRichel March 2, 2026 13:22
@LrxGaelle LrxGaelle requested a review from GabBimdata March 3, 2026 08:41
isCreatingModels.value = true;

try {
selection.value = selection.value.map((f) => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to re-assign selection.value here, because deleteModels reloads the file structure and replaces file references. Without changing the array reference, the table does not consistently reflect the updated file state. Re-assigning ensures the UI updates while preserving the current selection.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants