Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

schema.json

  1. S’assurer de la cohérence de sw_sys_metacolumn.
    Voici une requête pour aider à la comparaison de la définition des colonnes par le Studio et la réalité.

    Bloc de code
    languagesql
    SET @tableName = 'customercontact';
    SET @realTableName = CONCAT('sw_data_', @tableName);
    
    SELECT
      meta.metacolumn_ID,
      meta.schemaColumn,
      isc.COLUMN_NAME,
      meta.`position`,
      isc.ORDINAL_POSITION,
      meta.schemaColumnType,
      meta.schemaColumnLength,
      isc.COLUMN_TYPE,
      meta.storageType,
      isc.IS_GENERATED
    FROM (
    	SELECT
    		mc.*,
    		mt.schemaTable
    	FROM sw_sys_metacolumn AS mc
    	INNER JOIN sw_sys_metatable AS mt ON mt.metatable_ID = mc.metatable_ID
    	WHERE mt.schemaTable = @realTableName
    ) AS meta
    LEFT JOIN INFORMATION_SCHEMA.COLUMNS AS isc ON isc.TABLE_SCHEMA = DATABASE() AND isc.TABLE_NAME = @realTableName AND isc.COLUMN_NAME = meta.schemaColumn
    
    UNION
    
    SELECT
      meta.metacolumn_ID,
      meta.schemaColumn,
      isc.COLUMN_NAME,
      meta.`position`,
      isc.ORDINAL_POSITION,
      meta.schemaColumnType,
      meta.schemaColumnLength,
      isc.COLUMN_TYPE,
      meta.storageType,
      isc.IS_GENERATED
    FROM INFORMATION_SCHEMA.COLUMNS AS isc
    LEFT JOIN (
    	SELECT
    		mc.*,
    		mt.schemaTable
    	FROM sw_sys_metacolumn AS mc
    	INNER JOIN sw_sys_metatable AS mt ON mt.metatable_ID = mc.metatable_ID
    	WHERE mt.schemaTable = @realTableName
    ) AS meta ON isc.COLUMN_NAME = meta.schemaColumn
    WHERE isc.TABLE_SCHEMA = DATABASE() AND isc.TABLE_NAME = @realTableName
    
    ORDER BY IFNULL(`position`, 0), ORDINAL_POSITION;
  2. Définir les colonnes

    1. Avoir toutes les colonnes réelles dans leur ordre de création

      Bloc de code
      languagesql
      SET @tableName = 'customercontact'; SET @prefix = CONCAT('sw_data_', @tableName, '.'); /*Field list (without custom field)*/ SELECT SUBSTRING(mc.codeMetaColumn, LENGTH(@prefix)+1) FROM sw_sys_metacolumn AS mc WHERE mc.codeMetaColumn LIKE CONCAT(@prefix,'%') AND IFNULL(mc.storageType, 0) != 1 ORDER BY mc.position;

    2. Rendre certaines colonnes inaccessibles

    3. Définir toutes les entités nécessaires pour les colonnes avec ForeignEntity

    4. Formatter

    5. Traduire

    6. Badge

  3. Définir l’identification

  4. Si c’est une sous-entité définir les propriétés nécessaires

  5. Définir l’export de la liste avec Exportable
    Note : si la variable de profile n’existe pas encore dans l’Excel, mettre “Exportable”: false
    Exemple : pour l’entité customercontact

    Bloc de code
    languagejson
    "Exportable": {
      "Variable": "profile.exportable.customercontact"
    }
  6. Définir la fiche d'édition avec EntityConfigName
    Notes :

    • le nom correspond au fichier sans l’extension .id.component.json

    • la propriété est soumise aux BusinessFeatureFlags

  7. Ajouter les actions

    Bloc de code
    languagejson
    "Actions": {
      "Standard": {
        "New": {
          "Link": {
            "Target": "customer/new",
            "Mode": "Redirect"
          }
        }
      },
      "Inline": {
        "Inline1": {
          "Label": "Inline1",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        },
        "Inline2": {
          "Label": "Inline2",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        },
        "Inline3": {
          "Label": "Inline3",
          "Icon": "lightbulb",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        }
      },
      "Menu": {
        "Menu1": {
          "Label": "Menu1",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        },
        "Menu2": {
          "Label": "Menu2",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        },
        "Menu3": {
          "Label": "Menu3",
          "Icon": "lightbulb",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        }
      }
    }
  8. Définir la vue par défaut “Tous”

    Bloc de code
    languagejson
    "ViewsDefaultSettings": {
      "Listing": {
        "Columns": [
          "colonne1",
          "colonne2",
          "colonne3"
        ]
      }
    }

    Notes :

    • Le système met toujours la colonne primaire (TitleField) en première position, même si on ne l’a pas mis dans la liste des colonnes de la vue

    • Lorsqu’il n’y a pas une colonne en plus de la colonne primaire, il y a une erreur système

...