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
Loading items

Target

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