Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • coscine/frontend/libraries/form-generator
1 result
Select Git revision
Show changes
Commits on Source (3)
{
"name": "@coscine/form-generator",
"version": "3.3.0",
"version": "3.4.0",
"main": "./dist/index.umd.cjs",
"module": "./dist/index.js",
"browser": "./dist/index.js",
......
......@@ -104,7 +104,7 @@ export default defineComponent({
}
},
input(label: Label | null) {
if (label && label.value) {
if (label?.value) {
this.object.value = label.value;
} else {
this.object.value = '';
......
......@@ -97,7 +97,7 @@ export default defineComponent({
},
methods: {
input(label: Label | null) {
if (label && label.value) {
if (label?.value) {
this.object.value = label.value;
} else {
this.object.value = '';
......
......@@ -22,7 +22,7 @@ import i18n from '@/plugins/i18n';
import '@/plugins/deprecated/vue-multiselect';
import type { Label } from '@/types/labels';
import type { ObjectLabel } from '@/types/labels';
import type { Quad_Object } from 'rdf-js';
import factory from 'rdf-ext';
......@@ -52,30 +52,30 @@ export default defineComponent({
},
list: {
required: true,
type: Array as PropType<Array<string>>,
type: Array as PropType<Array<Quad_Object>>,
},
},
data() {
return {
object: factory.literal(''),
object: null as Quad_Object | null,
};
},
computed: {
selectableOptions(): Label[] {
selectableOptions(): ObjectLabel[] {
return this.list
.map((entry) => {
return {
name: entry,
name: entry.value,
value: entry,
};
})
.sort((item1, item2) => item1.name.localeCompare(item2.name));
},
selectedOption(): Label | undefined {
if (this.object.value !== '') {
selectedOption(): ObjectLabel | undefined {
if (this.object && this.object.value !== '') {
return {
name: this.object.value,
value: this.object.value,
value: this.object,
};
}
return undefined;
......@@ -91,17 +91,17 @@ export default defineComponent({
this.loadData();
},
methods: {
input(label: Label | null) {
if (label && label.value) {
this.object.value = label.value;
input(label: ObjectLabel | null) {
if (label?.value) {
this.object = label.value;
} else {
this.object.value = '';
this.object = factory.literal('');
}
this.$emit('input', this.object);
},
loadData() {
if (this.object.value !== this.entry.value) {
this.object.value = this.entry.value;
if (this.object?.value !== this.entry.value) {
this.object = this.entry;
}
},
},
......
......@@ -82,7 +82,7 @@ export default defineComponent({
},
data() {
return {
object: factory.literal('', this.dataType),
object: factory.literal('', this.dataType) as Quad_Object,
};
},
computed: {
......@@ -125,7 +125,7 @@ export default defineComponent({
},
loadData() {
if (this.object.value !== this.entry.value) {
this.object.value = this.entry.value;
this.object = this.entry;
}
},
replacePlaceholder() {
......
......@@ -154,11 +154,7 @@ import InputShape from './InputShape.vue';
import type { Dataset, NamedNode, Quad_Object, Quad_Subject } from 'rdf-js';
import prefixes from '@zazuko/prefixes/prefixes';
import factory from 'rdf-ext';
import {
getObject,
getObjectStringList,
retrieveChildren,
} from '@/util/linkedData';
import { getObject, getObjectList, retrieveChildren } from '@/util/linkedData';
import type {
FixedValueObject,
FixedValues,
......@@ -306,6 +302,9 @@ export default defineComponent({
if (this.classObject) {
return 'InputCombobox';
}
if (this.hasValues.length > 0) {
return 'InputTextField';
}
}
return null;
},
......@@ -343,6 +342,17 @@ export default defineComponent({
}
return undefined;
},
hasValues(): Quad_Object[] {
const hasValues = this.dataset.match(
this.property,
factory.namedNode(prefixes.sh + 'hasValue')
);
const valueObjects: Quad_Object[] = [];
for (const hasValue of hasValues) {
valueObjects.push(hasValue.object);
}
return valueObjects;
},
fieldCanBeInvisible(): boolean {
return (
(this.required &&
......@@ -398,9 +408,9 @@ export default defineComponent({
}
return labels[0].object.value;
},
list(): string[] {
list(): Quad_Object[] {
if (this.isList) {
return getObjectStringList(
return getObjectList(
this.property,
factory.namedNode(prefixes.sh + 'in'),
this.dataset
......@@ -483,7 +493,7 @@ export default defineComponent({
singleLine(): boolean {
return !this.dataset.some(
(quad) =>
quad.subject === this.property &&
quad.subject.value === this.property.value &&
quad.predicate.value === 'http://datashapes.org/dash#singleLine' &&
quad.object.value === 'false'
);
......@@ -527,6 +537,7 @@ export default defineComponent({
this.initMetadata();
this.initFixedValues();
this.initDefaultValues();
this.initHasValues();
},
methods: {
changeLockable() {
......@@ -602,6 +613,14 @@ export default defineComponent({
invisibleList.every((entry) => entry.value === '1');
}
},
initHasValues() {
if (this.hasValues && this.hasValues.length > 0) {
this.input(
this.hasValues.map((object) => this.createRelevantEntry(object)),
false
);
}
},
initMetadata() {
this.values = [...this.metadataValues];
this.fillMetadata();
......@@ -633,15 +652,21 @@ export default defineComponent({
insertNewFields(numberOfNewFields = 1) {
const newValues = [...this.values];
for (let i = 0; i < numberOfNewFields; i++) {
newValues.push(this.createRelevantEntry());
}
this.input(newValues, false);
},
createRelevantEntry(value: Quad_Object | undefined = undefined) {
if (value) {
return value;
}
let entry: Quad_Object = factory.literal('', this.dataType);
if (this.isNode) {
entry = factory.blankNode();
} else if (!this.dataType) {
entry = factory.namedNode('');
}
newValues.push(entry);
}
this.input(newValues, false);
return entry;
},
caseInsertField(entryKey: number) {
return entryKey === 0 ? true : false;
......
// From @coscine/api-client
import type { Quad_Object } from 'rdf-js';
/**
* Bilingual labels
* @export
......@@ -26,16 +28,11 @@ export interface BilingualLabels {
* @interface Label
*/
export interface Label {
/**
* Name of the application profile
* @type {string}
* @memberof Label
*/
name?: string | null;
/**
* Name of the application profile
* @type {string}
* @memberof Label
*/
value?: string | null;
}
export interface ObjectLabel {
name?: string | null;
value?: Quad_Object | null;
}
......@@ -6,6 +6,7 @@ import type {
Dataset,
Literal,
Quad,
Quad_Object,
Quad_Predicate,
Quad_Subject,
} from 'rdf-js';
......@@ -28,7 +29,7 @@ export function getObject(
return results;
}
export function getObjectList(
export function getObjectQuadList(
subject: Quad_Subject,
predicate: Quad_Predicate,
dataset: Dataset
......@@ -62,15 +63,15 @@ export function getObjectList(
return [];
}
export function getObjectStringList(
export function getObjectList(
subject: Quad_Subject,
predicate: Quad_Predicate,
dataset: Dataset
): string[] {
): Quad_Object[] {
const rdfFirstNode = factory.namedNode(prefixes.rdf + 'first');
return getObjectList(subject, predicate, dataset)
return getObjectQuadList(subject, predicate, dataset)
.filter((quad) => quad.predicate.equals(rdfFirstNode))
.map((quad) => quad.object.value);
.map((quad) => quad.object);
}
export async function retrieveChildren(
......