Commit 4bfbc3e0 authored by gijs's avatar gijs

Links in new layout

parent ca855899
......@@ -727,6 +727,22 @@ li li { padding-left: var(--row-indent); }
height: 100%;
}
.linked-node .axis-row--header:before {
content: "🔗";
background: linear-gradient(to left,
var(--background-color) 0px, var(--background-color) 4px,
transparent 4px, transparent 8px,
var(--background-color) 8px, var(--background-color) 12px,
transparent 12px, transparent 16px,
var(--background-color) 16px, var(--background-color) 20px,
transparent 20px);
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.axis-row--body {
display: inline-block;
background-color: var(--row-color);
......
......@@ -53,6 +53,7 @@ W.lang.en = {
"rechercher": "search",
"rompre le lien": "break link",
"S'inscrire": "Register",
"Sans titre": "Untitled",
"Se connecter": "Log in",
"Se déconnecter": "Log out",
"Supprimer": "Delete",
......
......@@ -22,10 +22,18 @@ window.W = window.W || {};
// Part of transition should be removed later.
var uuidMatch = /[\w\d]{8}\-[\w\d]{4}\-4[\w\d]{3}\-[\w\d]{4}\-[\w\d]{12}/g;
/**
* Loop through all sublines and set a type on them, to make the transition
* to the linked axis data structure.
* @param {Object} line
*/
function fixLines(line) {
if ('target' in line) {
line['type'] = 'link';
/**
* Method to filter out links?
*/
if (!line['target'] || !line['target'].match(uuidMatch)) {
return null;
}
......@@ -126,7 +134,7 @@ window.W = window.W || {};
{
type: Backbone.HasOne,
key: 'mainline',
relatedModel: 'LineModel',
relatedModel: 'LineModel', // First line can not be a link
reverseRelation: {
key: 'score',
includeInJSON: false,
......@@ -145,12 +153,6 @@ window.W = window.W || {};
}
],
parse: function (data) {
data.mainline = fixLines(data.mainline);
return data;
// Add IDs, drop invalid links, add type
},
getDepth: function () {
// Methode pour le vue "slider"
// based on http://stackoverflow.com/questions/13523951/how-to-check-the-depth-of-an-object
......@@ -193,75 +195,31 @@ window.W = window.W || {};
// console.log(data);
data = trimStrings(data);
// Add IDs, drop invalid links, add type
data.mainline = fixLines(data.mainline);
// console.log(data);
return data;
},
});
<<<<<<< HEAD
W.EntryModel = Backbone.RelationalModel.extend({
subModelTypes: {
'line': 'LineModel',
'link': 'LinkModel'
}
});
=======
W.LineModel = Backbone.RelationalModel.extend({
defaults: {
sublines: [],
//id:1, //il faudra mettre une id quand le modele sera opérationnel -> backend
title: 'Sans titre', //(uniq)
contingent: false, // optionnel, au choix de l'interprète
module_: false,
aspect: '',
//choix dans un array (duratif, itératif, sémelfactif)
// duratif, l'action se déroule en continu
// itératif, l'action est répétitive
// sémelfactif l'action est ponctuelle
piece_jointe: '', //url qui pointe vers un document
terme: '', //(str)
attachment: null,
// boucle: on teste d'abord si boucle check est true
// si oui y a t'il une durée de n à p
// si non mettre n et p à 0
// TODO: check if those 4 props can be merge in one
// rangeType = enum{undetermined, exact, minimal, range}
// null | { type: rangeType, value: null|number|[number, number]}
boucle: null,
// TODO: check if those 3 props can be merge in one
// alternativeMode = enum { inclusive, exclusive}
// null | { type: rangeType, mode: alternativeMode, value: null|number|[number, number]}
alternative: null,
// alternative_mode: '', //choix dans un array (exclusive, inclusive, conditionnelle) Validation importante des conditions dans une boucle inclusive
// alternative_symbole: '',
condition: '', // seulement valide si axe contingent ou si sous-axe d'une alternative
imperative: false,
tag: '', //Validation: peut avoir un tag seulement si l'axe n'est pas principal, de plus le tag doit être le même pour ses siblings. Succession ordonnée, sans ordre, simultaméité, accumulation
goto: null, //reference de l'axe vers lequel il renvoie
focused: 0, // pas sûr que c'est l'endroit où mettre ceci.
// Pas vraiment une propriété de l'objet.
// Si l'objet est focused, il faut que la classe axis-focus
// soit sur ses éléments handle et options.
parent: null,
actant: '', // string
adresse: '', // string
commandement: '', // string
destination: '', // string
code: '', // string
indications: '' // long string
},
>>>>>>> master
W.LineModel = W.EntryModel.extend({
defaults: function () {
return {
sublines: [],
// An id is necessary to make links to axes before they are saved.
// Once models have an id they are managed by the collection.
id: uuidv4(),
title: 'Sans titre', //(uniq)
title: t('Sans titre'), //(uniq)
contingent: false, // optionnel, au choix de l'interprète
module_: false,
aspect: '',
......@@ -271,7 +229,7 @@ window.W = window.W || {};
// sémelfactif l'action est ponctuelle
piece_jointe: '', //url qui pointe vers un document
terme: '', //(str)
attachment: null,
// boucle: on teste d'abord si boucle check est true
// si oui y a t'il une durée de n à p
// si non mettre n et p à 0
......@@ -344,7 +302,6 @@ window.W = window.W || {};
}]
});
<<<<<<< HEAD
W.LinkModel = W.EntryModel.extend({
relations: [{
type: Backbone.HasOne,
......@@ -366,12 +323,11 @@ window.W = window.W || {};
return 1;
}
=======
});
W.PermissionModel = Backbone.RelationalModel.extend({
defaults: {
permissions: []
},
>>>>>>> master
});
})();
......@@ -293,19 +293,6 @@ window.W = window.W || {};
return _.omit(data, ['id']);
}
function uuidv4() {
if (crypto && Uint8Array) {
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);
});
} else {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
}
function valid_mount_for_link(link, mount) {
if (link.get('target') == mount) {
return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment