Commit 6590f372 authored by Benedikt Heinrichs's avatar Benedikt Heinrichs
Browse files

New: Qualified Shape Redo

parent cc673286
Loading
Loading
Loading
Loading
+22 −29
Original line number Diff line number Diff line
@@ -45,6 +45,19 @@
      @updateDefinition="updateDefinition"
      @updateProperty="updateProperty"
    />
    <b-collapse id="collapse-qualified" v-model="qualifiedVisible" class="mt-2">
      <PropertyRenderer
        v-for="entry in qualifiedProperties"
        :key="entry.predicate.value"
        :application-profile="applicationProfile"
        :definition="definition"
        :entry="entry"
        :readonly="readonlyComputed"
        :selected-property="selectedProperty"
        @updateDefinition="updateDefinition"
        @updateProperty="updateProperty"
      />
    </b-collapse>
    <b-button
      block
      :class="(stringVisible ? null : 'collapsed') + ' collapseButton'"
@@ -149,34 +162,6 @@
        />
      </b-card>
    </b-collapse>
    <b-button
      block
      :class="(qualifiedVisible ? null : 'collapsed') + ' collapseButton'"
      :aria-expanded="qualifiedVisible ? 'true' : 'false'"
      aria-controls="collapse-value"
      @click="qualifiedVisible = !qualifiedVisible"
    >
      {{ $t("qualifiedVisible") }}
    </b-button>
    <b-collapse
      id="collapse-administrative"
      v-model="qualifiedVisible"
      class="mt-2"
    >
      <b-card>
        <PropertyRenderer
          v-for="entry in qualifiedProperties"
          :key="entry.predicate.value"
          :application-profile="applicationProfile"
          :definition="definition"
          :entry="entry"
          :readonly="readonlyComputed"
          :selected-property="selectedProperty"
          @updateDefinition="updateDefinition"
          @updateProperty="updateProperty"
        />
      </b-card>
    </b-collapse>
  </div>
</template>

@@ -238,7 +223,6 @@ export default defineComponent({
      propertyPairProperties: propertyPairProperties,
      propertyPairVisible: false,
      qualifiedProperties: qualifiedProperties,
      qualifiedVisible: false,
      selectedTypePredicate: shaclDatatypeProperty.predicate,
      stringProperties: stringShaclProperties,
      stringVisible: false,
@@ -248,6 +232,15 @@ export default defineComponent({
    };
  },
  computed: {
    qualifiedVisible(): boolean {
      if (this.selectedType) {
        return (
          this.selectedType.predicate.value ===
          prefixes.sh + "qualifiedValueShape"
        );
      }
      return false;
    },
    readonlyComputed(): boolean {
      return (
        this.readonly || this.definition.match(this.selectedProperty).size === 0
+11 −8
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ export default {

  availableapplicationprofiles: "Verfügbare @:(ApplicationProfile)e",
  vocabulary: "Vokabularterme",
  detailview: "Detailansicht",
  detailview: "Detailansicht (Felder)",
  properties: "Feld Eigenschaften",

  searchAP: "Suche @:(ApplicationProfile)e",
@@ -286,7 +286,7 @@ export default {
      description: "Anzeigename des Feldes (sh:name)",
    },
    node: {
      label: "Node",
      label: "Erfüllt Profil (immer) (node)",
      description:
        "Zeigt auf ein anderes validierendes @:(ApplicationProfile), z.B. https://purl.org/coscine/ap/engmeta (sh:node)",
    },
@@ -308,21 +308,24 @@ export default {
      description: "Regex Pattern zur Überprüfung des Wertes (sh:pattern)",
    },
    qualifiedMaxCount: {
      label: "Maximale Anzahl bedingter @:(ApplicationProfile)e",
      description: "SHACL sh:qualifiedMaxCount",
      label: "Maximales Vorkommen des bedingten @:(ApplicationProfile)s",
      description:
        "Angabe des maximal gestatteten Vorkommen des bedingten @:(ApplicationProfile)s (sh:qualifiedMaxCount)",
    },
    qualifiedMinCount: {
      label: "Minimale Anzahl bedingter @:(ApplicationProfile)e",
      description: "SHACL sh:qualifiedMinCount",
      label: "Minimales Vorkommen des bedingten @:(ApplicationProfile)s",
      description:
        "Angabe des minimal gestatteten Vorkommen des bedingten @:(ApplicationProfile)s (sh:qualifiedMinCount)",
    },
    qualifiedValueShape: {
      label: "Bedingtes @:(ApplicationProfile)",
      label: "Erfüllt Profil (m-n Mal) (bedingt)",
      description:
        "URL/Definition eines bedingten @:(ApplicationProfile)s (sh:qualifiedValueShape)",
    },
    qualifiedValueShapesDisjoint: {
      label: "Bedingte @:(ApplicationProfile)e können disjunkt sein",
      description: "SHACL sh:qualifiedValueShapesDisjoint",
      description:
        "Ein-/Ausschalten ob @:(ApplicationProfile)e disjunkt sein können (sh:qualifiedValueShapesDisjoint)",
    },
    severity: {
      label: "Fehler-Schwere",
+11 −8
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ export default {

  availableapplicationprofiles: "Available @:(ApplicationProfile)s",
  vocabulary: "Vocabulary Terms",
  detailview: "Detail View",
  detailview: "Detail View (Fields)",
  properties: "Field Properties",

  searchAP: "Search @:(ApplicationProfile)s",
@@ -283,7 +283,7 @@ export default {
      description: "Display name of the field (sh:name)",
    },
    node: {
      label: "Node",
      label: "Satisfies Profile (always) (node)",
      description:
        "Points to another validating @.lower:(ApplicationProfile), e.g. https://purl.org/coscine/ap/engmeta (sh:node)",
    },
@@ -305,21 +305,24 @@ export default {
      description: "Regex Pattern for the validation of the value (sh:pattern)",
    },
    qualifiedMaxCount: {
      label: "Qualified Max Count",
      description: "SHACL sh:qualifiedMaxCount",
      label: "Max Count of Qualified @:(ApplicationProfile)",
      description:
        "Set the maximum amount of the @.lower:(ApplicationProfile) occurring (sh:qualifiedMaxCount)",
    },
    qualifiedMinCount: {
      label: "Qualified Min Count",
      description: "SHACL sh:qualifiedMinCount",
      label: "Min Count of Qualified @:(ApplicationProfile)",
      description:
        "Set the minimum amount of the @.lower:(ApplicationProfile) occurring (sh:qualifiedMinCount)",
    },
    qualifiedValueShape: {
      label: "Qualified Value Shape",
      label: "Satisfies Profile (m-n times) (qualified)",
      description:
        "URL/Definition of a conforming qualifying @.lower:(ApplicationProfile) (sh:qualifiedValueShape)",
    },
    qualifiedValueShapesDisjoint: {
      label: "Qualified Value Shapes Disjoint",
      description: "SHACL sh:qualifiedValueShapesDisjoint",
      description:
        "Turn on/off whether qualified value shapes are allowed to be disjoint (sh:qualifiedValueShapesDisjoint)",
    },
    severity: {
      label: "Severity",
+10 −10
Original line number Diff line number Diff line
@@ -74,6 +74,16 @@ export const shaclPropertyTypes: ShaclProperty[] = [
    searchType: "node",
    type: "url",
  },
  {
    predicate: factory.namedNode(
      prefixes.sh + "qualifiedValueShape",
    ) as Quad_Predicate,
    labelKey: "shacl.qualifiedValueShape.label",
    descriptionKey: "shacl.qualifiedValueShape.description",
    localized: false,
    searchType: "node",
    type: "url",
  },
  {
    predicate: factory.namedNode(prefixes.sh + "in") as Quad_Predicate,
    labelKey: "shacl.in.label",
@@ -255,16 +265,6 @@ export const propertyPairProperties: ShaclProperty[] = [
];

export const qualifiedProperties: ShaclProperty[] = [
  {
    predicate: factory.namedNode(
      prefixes.sh + "qualifiedValueShape",
    ) as Quad_Predicate,
    labelKey: "shacl.qualifiedValueShape.label",
    descriptionKey: "shacl.qualifiedValueShape.description",
    localized: false,
    searchType: "node",
    type: "url",
  },
  {
    predicate: factory.namedNode(
      prefixes.sh + "qualifiedMinCount",
+16 −1
Original line number Diff line number Diff line
@@ -17,7 +17,11 @@
    <AimsCollapsibleColumn
      :is-collapsed="collapsedList.includes(1)"
      :size="columnSizes[1]"
      :title="$t('Graph').toString()"
      :title="
        applicationProfileLabel !== ''
          ? applicationProfileLabel
          : $t('noNameSet').toString()
      "
      @isCollapsing="handleCollapse(1)"
    >
      <graph-layout
@@ -94,6 +98,10 @@ export default defineComponent({
        >;
      }>,
    },
    definition: {
      required: true,
      type: Object as PropType<Dataset>,
    },
    sessionStoredApplicationProfiles: {
      required: false,
      default: 0,
@@ -129,6 +137,13 @@ export default defineComponent({
    };
  },
  computed: {
    applicationProfileLabel(): string {
      return getApplicationProfileLabelValue(
        this.applicationProfile,
        this.definition,
        this.$root.$i18n.locale,
      );
    },
    completeDefinition(): Dataset {
      let definition = factory.dataset() as unknown as DatasetExt;
      definition = definition.merge(this.inheritedDataset);