settings.senseAutoComplete = "";
var karpLemgramLink = "https://spraakbanken.gu.se/karp/#?mode=DEFAULT&search=extended||and|lemgram|equals|<%= val.replace(/:\\d+/, '') %>";
var liteOptions = {
"is": "=",
"is_not": "!="
}
var setOptions = {
"is": "contains",
"is_not": "not contains"
};
var probabilitySetOptions = {
"is": "highest_rank",
"is_not": "not_highest_rank",
"contains": "rank_contains",
"contains_not": "not_rank_contains",
};
var defaultContext = {
"1 sentence": "1 sentence"
};
var spContext = {
"1 sentence": "1 sentence",
"1 paragraph": "1 paragraph"
};
var spWithin = {
"sentence": "sentence",
"paragraph": "paragraph"
};
var attrs = {}; // positional attributes
var sattrs = {}; // structural attributes
attrs.pos = {
label: "pos",
translationKey: "pos_",
dataset: {
"AB": "AB",
"MID|MAD|PAD": "DL",
"DT": "DT",
"HA": "HA",
"HD": "HD",
"HP": "HP",
"HS": "HS",
"IE": "IE",
"IN": "IN",
"JJ": "JJ",
"KN": "KN",
"NN": "NN",
"PC": "PC",
"PL": "PL",
"PM": "PM",
"PN": "PN",
"PP": "PP",
"PS": "PS",
"RG": "RG",
"RO": "RO",
"SN": "SN",
"UO": "UO",
"VB": "VB"
},
opts: liteOptions,
extendedComponent: "datasetSelect",
escape: false,
order: 0
};
attrs.msd = {
label: "msd",
opts: settings.defaultOptions,
extendedTemplate: '' +
'',
extendedController: function($scope, $uibModal) {
var modal = null;
$scope.onIconClick = function() {
var msdHTML = settings.markup.msd;
modal = $uibModal.open({
template: '
',
scope: $scope
})
}
$scope.clickX = function(event) {
modal.close()
}
$scope.msdClick = function(event) {
val = $(event.target).parent().data("value")
if(!val) return;
$scope.input = val;
modal.close();
}
}
};
attrs.baseform = {
label: "baseform",
type: "set",
opts: settings.defaultOptions,
extendedTemplate: "",
order: 1
};
attrs.lemgram = {
label: "lemgram",
type: "set",
opts: setOptions,
stringify: function(lemgram) {
// TODO: what if we're getting more than one consequtive lemgram back?
return util.lemgramToString(_.trim(lemgram), true);
},
externalSearch: karpLemgramLink,
internalSearch: true,
extendedTemplate: ""
+ "{{'choose_lemgram' | loc:lang}}",
extendedController: function($scope) {
$scope.valueError = false;
$scope.checkForError = function(valueSelected) {
$scope.valueError = !valueSelected;
}
},
order: 2
};
attrs.dalinlemgram = {
label: "dalin-lemgram",
type: "set",
opts: setOptions,
stringify: function(lemgram) {
// TODO: what if we're getting more than one consequtive lemgram back?
return util.lemgramToString(_.trim(lemgram), true);
},
externalSearch: karpLemgramLink,
internalSearch: true,
extendedTemplate: "",
order: 2
};
attrs.saldo = {
label: "saldo",
type: "set",
opts: setOptions,
stringify: function(saldo) {
return util.saldoToString(saldo, true);
},
externalSearch: "https://spraakbanken.gu.se/karp/#?mode=DEFAULT&search=extended||and|sense|equals|<%= val %>",
internalSearch: true,
extendedTemplate: settings.senseAutoComplete,
order: 3
};
attrs.dephead = {
label: "dephead",
displayType: "hidden"
};
attrs.deprel = {
label: "deprel",
translationKey: "deprel_",
extendedComponent: "datasetSelect",
dataset: {
"++": "++",
"+A": "+A",
"+F": "+F",
"AA": "AA",
"AG": "AG",
"AN": "AN",
"AT": "AT",
"CA": "CA",
"DB": "DB",
"DT": "DT",
"EF": "EF",
"EO": "EO",
"ES": "ES",
"ET": "ET",
"FO": "FO",
"FP": "FP",
"FS": "FS",
"FV": "FV",
"I?": "I?",
"IC": "IC",
"IG": "IG",
"IK": "IK",
"IM": "IM",
"IO": "IO",
"IP": "IP",
"IQ": "IQ",
"IR": "IR",
"IS": "IS",
"IT": "IT",
"IU": "IU",
"IV": "IV",
"JC": "JC",
"JG": "JG",
"JR": "JR",
"JT": "JT",
"KA": "KA",
"MA": "MA",
"MS": "MS",
"NA": "NA",
"OA": "OA",
"OO": "OO",
"OP": "OP",
"PL": "PL",
"PR": "PR",
"PT": "PT",
"RA": "RA",
"SP": "SP",
"SS": "SS",
"TA": "TA",
"TT": "TT",
"UK": "UK",
"VA": "VA",
"VO": "VO",
"VS": "VS",
"XA": "XA",
"XF": "XF",
"XT": "XT",
"XX": "XX",
"YY": "YY",
"CJ": "CJ",
"HD": "HD",
"IF": "IF",
"PA": "PA",
"UA": "UA",
"VG": "VG",
"ROOT": "ROOT"
},
opts: liteOptions
};
attrs.prefix = {
label: "prefix",
type: "set",
opts: setOptions,
stringify: function(lemgram) {
return util.lemgramToString(lemgram, true);
},
externalSearch: karpLemgramLink,
internalSearch: true,
extendedTemplate: ""
};
attrs.suffix = {
label: "suffix",
type: "set",
opts: setOptions,
stringify: function(lemgram) {
return util.lemgramToString(lemgram, true);
},
externalSearch: karpLemgramLink,
internalSearch: true,
extendedTemplate: ""
};
attrs.ref = {
label: "ref",
displayType: "hidden"
};
attrs.link = {
label: "sentence_link"
};
attrs.ne_ex = {
label: "ne_expr",
translationKey: "ne_expr_",
extendedComponent: "datasetSelect",
isStructAttr: true,
dataset: [
"ENAMEX",
"TIMEX",
"NUMEX",
]
};
attrs.ne_type = {
label: "ne_type",
translationKey: "ne_type_",
extendedComponent: "datasetSelect",
isStructAttr: true,
dataset: [
"LOC",
"PRS",
"ORG",
"EVN",
"WRK",
"OBJ",
"MSR",
"TME"
]
};
attrs.ne_subtype = {
label: "ne_subtype",
translationKey: "ne_subtype_",
extendedComponent: "datasetSelect",
isStructAttr: true,
dataset: [
"AST",
"GPL",
"PPL",
"FNC",
"STR",
"HUM",
"MTH",
"ANM",
"CLC",
"FIN",
"ATH",
"CLT",
"PLT",
"TVR",
"EDU",
"TRN",
"CRP",
"HPL",
"WTH",
"CLU",
"ATL",
"RLG",
"WRT",
"RTV",
"WAO",
"PRJ",
"WMD",
"WAE",
"MDC",
"FWP",
"CMP",
"VHA",
"VHG",
"VHW",
"PRZ",
"PRD",
"VLM",
"TMP",
"INX",
"DST",
"PRC",
"CUR",
"DEN",
"DSG",
"SPD",
"FRQ",
"AGE",
"MSU",
"WMU",
"CMU",
"WEB",
"PSS",
"CVU",
"IDX",
"LST",
"DAT",
"PER"
],
stringify: function(val) {
lString = util.getLocaleStringUndefined("ne_subtype_" + val)
return lString || val;
}
};
attrs.ne_name = {
label: "ne_name",
isStructAttr: true
};
sattrs.date = {
label: "date"
};
var modernAttrsOld = {
pos: attrs.pos,
msd: attrs.msd,
lemma: attrs.baseform,
lex: attrs.lemgram,
saldo: attrs.saldo,
dephead: attrs.dephead,
deprel: attrs.deprel,
ref: attrs.ref,
prefix: attrs.prefix,
suffix: attrs.suffix
};
var modernAttrs = {
pos: attrs.pos,
msd: attrs.msd,
lemma: attrs.baseform,
lex: attrs.lemgram,
dephead: attrs.dephead,
deprel: attrs.deprel,
ref: attrs.ref,
prefix: attrs.prefix,
suffix: attrs.suffix,
ne_ex: attrs.ne_ex,
ne_type: attrs.ne_type,
ne_subtype: attrs.ne_subtype,
ne_name: attrs.ne_name,
complemgram: {
label: "complemgram",
internalSearch: true,
ranked: true,
display: {
expandList: {
splitValue: function(value) { return value.split("+"); },
searchKey: "lex",
joinValues: " + ",
stringify: function(lemgram) { return util.lemgramToString(lemgram, true); },
linkAllValues: true
}
},
type: "set",
hideStatistics: true,
hideExtended: true,
hideCompare: true
},
compwf: {
label: "compwf",
display: {
"expandList": {}
},
type: "set",
hideStatistics: true,
hideExtended: true,
hideCompare: true
},
sense: {
label: "sense",
type: "set",
ranked: true,
display: {
expandList: {
internalSearch: function(key, value) { return "[" + key + " highest_rank '" + regescape(value) + "']"}
}
},
stringify: function(sense) { return util.saldoToString(sense, true); },
opts: probabilitySetOptions,
externalSearch: "https://spraakbanken.gu.se/karp/#?mode=DEFAULT&search=extended||and|sense|equals|<%= val %>",
internalSearch: true,
extendedTemplate: settings.senseAutoComplete
}
};
var modernAttrs2 = {
pos: attrs.pos,
msd: attrs.msd,
lemma: attrs.baseform,
lex: attrs.lemgram,
dephead: attrs.dephead,
deprel: attrs.deprel,
ref: attrs.ref,
prefix: attrs.prefix,
suffix: attrs.suffix,
ne_ex: attrs.ne_ex,
ne_type: attrs.ne_type,
ne_subtype: attrs.ne_subtype,
ne_name: attrs.ne_name,
complemgram: modernAttrs.complemgram,
compwf: modernAttrs.compwf,
sense: modernAttrs.sense,
sentiment: {
label: "sentiment"
},
blingbring: {
label: "blingbring",
type: "set",
internalSearch: true
},
swefn: {
label: "swefn",
type: "set",
externalSearch: "https://spraakbanken.gu.se/karp/#?mode=swefn&search=sense%7C%7Cswefn--<%= val %>",
internalSearch: true
}
};
var lexClassesText = {
text_blingbring: {
label: "blingbring",
type: "set",
isStructAttr: true,
ranked: true,
order: 500,
display: {
expandList: {
internalSearch: function(key, value) { return "[_.text_blingbring highest_rank '" + regescape(value) + "']"},
linkAllValues: true,
showAll: true
}
},
internalSearch: true
},
text_swefn: {
label: "swefn",
type: "set",
isStructAttr: true,
ranked: true,
order: 501,
display: {
expandList: {
internalSearch: function(key, value) { return "[_.text_swefn highest_rank '" + regescape(value) + "']"},
linkAllValues: true,
showAll: true
}
},
externalSearch: "https://spraakbanken.gu.se/karp/#?mode=swefn&search=sense%7C%7Cswefn--<%= val %>",
internalSearch: true
}
};
var readability = {
lix: {
label: "lix",
isStructAttr: true,
order: 600
},
ovix: {
label: "ovix",
isStructAttr: true,
order: 601
},
nk: {
label: "nk",
isStructAttr: true,
order: 602
}
};
settings.posset = {
type: "set",
label: "posset",
opts: setOptions,
translationKey: "pos_",
extendedComponent: "datasetSelect",
dataset: {
"AB": "AB",
"MID|MAD|PAD": "DL",
"DT": "DT",
"HA": "HA",
"HD": "HD",
"HP": "HP",
"HS": "HS",
"IE": "IE",
"IN": "IN",
"JJ": "JJ",
"KN": "KN",
"NN": "NN",
"PC": "PC",
"PL": "PL",
"PM": "PM",
"PN": "PN",
"PP": "PP",
"PS": "PS",
"RG": "RG",
"RO": "RO",
"SN": "SN",
"UO": "UO",
"VB": "VB"
},
order: 0
};
settings.fsvlemma = {
type: "set",
label: "baseform",
opts: setOptions,
extendedTemplate: ""
};
settings.fsvlex = {
type: "set",
label: "lemgram",
opts: setOptions,
extendedTemplate: "",
stringify: function(str) {
return util.lemgramToString(str, true);
},
externalSearch: karpLemgramLink,
internalSearch: true
};
settings.fsvvariants = {
type: "set",
label: "variants",
stringify: function(str) {
return util.lemgramToString(str, true);
},
extendedTemplate: "",
opts: setOptions,
externalSearch: karpLemgramLink,
internalSearch: true,
order: 4
};
settings.fsvdescription ='Fornsvenska textbanken är ett projekt som digitaliserar fornsvenska texter och gör dem tillgängliga över webben. Projektet leds av Lars-Olof Delsing vid Lunds universitet.';
var fsv_yngrelagar = {
morphology: 'fsvm',
id: "fsv-yngrelagar",
title: "Yngre lagar – Fornsvenska textbankens material",
description: settings.fsvdescription,
within: settings.defaultWithin,
context: spContext,
attributes: {
posset: settings.posset,
lemma: settings.fsvlemma,
lex: settings.fsvlex,
variants: settings.fsvvariants
},
structAttributes: {
text_title: {
label: "title",
extendedComponent: "datasetSelect",
dataset: [
"Kristoffers Landslag, nyskrivna flockar i förhållande till MEL",
"Kristoffers Landslag, innehållsligt ändrade flockar i förhållande til MEL",
"Kristoffers Landslag, flockar direkt hämtade från MEL",
"Kristoffers Landslag"
],
},
text_date: {label: "date"}
}
};
var fsv_aldrelagar = {
morphology: 'fsvm',
id: "fsv-aldrelagar",
title: "Äldre lagar – Fornsvenska textbankens material",
description: settings.fsvdescription,
within: settings.defaultWithin,
context: spContext,
attributes: {
posset: settings.posset,
lemma: settings.fsvlemma,
lex: settings.fsvlex,
variants: settings.fsvvariants
},
structAttributes: {
text_title: {
label: "title",
extendedComponent: "datasetSelect",
dataset: [
"Yngre Västgötalagens äldsta fragment, Lydekini excerpter och anteckningar",
"Tillägg till Upplandslagen, hskr A (Ups B 12)",
"Södermannalagen, enligt Codex iuris Sudermannici",
"Östgötalagen, fragment H, ur Kyrkobalken ur Skokloster Avdl I 145",
"Yngre Västmannalagen, enl Holm B 57",
"Vidhemsprästens anteckningar",
"Magnus Erikssons Stadslag, exklusiva stadslagsflockar",
"Södermannalagens additamenta, efter NKS 2237",
"Hälsingelagen",
"Yngre Västgötalagen, tillägg, enligt Holm B 58",
"Östgötalagen, fragment C, ur Holm B 1709",
"Yngre Västgötalagen, enligt Holm B 58",
"Upplandslagen enl Schlyters utgåva och Codex Ups C 12, hskr A",
"Skånelagen, enligt Holm B 76",
"Östgötalagen, fragment D, ur Holm B 24",
"Östgötalagen A, ur Holm B 50",
"Äldre Västgötalagen",
"Östgötalagen, fragment M, ur Holm B 196",
"Gutalagen enligt Holm B 64",
"Upplandslagen enligt Codex Holm B 199, Schlyters hskr B",
"Smålandslagens kyrkobalk",
"Dalalagen (Äldre Västmannalagen)",
"Gutalagens additamenta enligt AM 54",
"Bjärköarätten",
"Magnus Erikssons Landslag",
"Östgötalagen, fragment N, ur Köpenhamn AM 1056",
"Södermannalagen stadsfästelse - Confirmatio, enligt NKS 2237",
"Östgötalagen, fragment E, ur Ups B 22"
],
},
text_date: {label: "date"}
}
};
settings.commonStructTypes = {
date_interval: {
label: "date_interval",
hideSidebar: "true",
hideCompare: "true",
hideStatistics: "true",
opts: false,
extendedTemplate: ' {{combined.format("YYYY-MM-DD HH:mm")}}
{{combined2.format("YYYY-MM-DD HH:mm")}}
',
extendedController: [
"$scope", "searches", "$timeout", function($scope, searches, $timeout) {
var cl, getTime, getYear, ref, ref1, ref2, s, updateIntervals;
s = $scope;
cl = settings.corpusListing;
updateIntervals = function() {
var from, moments, ref, ref1, to;
moments = cl.getMomentInterval();
if (moments.length) {
return ref = _.invokeMap(moments, "toDate"), s.minDate = ref[0], s.maxDate = ref[1], ref;
} else {
ref1 = cl.getTimeInterval(), from = ref1[0], to = ref1[1];
s.minDate = moment(from.toString(), "YYYY").toDate();
return s.maxDate = moment(to.toString(), "YYYY").toDate();
}
};
s.$on("corpuschooserchange", function() {
return updateIntervals();
});
updateIntervals();
s.from_click = function(event) {
event.originalEvent.preventDefault();
return event.originalEvent.stopPropagation();
};
getYear = function(val) {
return moment(val.toString(), "YYYYMMDD").toDate();
};
getTime = function(val) {
return moment(val.toString(), "HHmmss").toDate();
};
if (!s.model) {
s.from_date = s.minDate;
s.to_date = s.maxDate;
ref = _.invokeMap(cl.getMomentInterval(), "toDate"), s.from_time = ref[0], s.to_time = ref[1];
} else if (s.model.length === 4) {
ref1 = _.map(s.model.slice(0, 3), getYear), s.from_date = ref1[0], s.to_date = ref1[1];
ref2 = _.map(s.model.slice(2), getTime), s.from_time = ref2[0], s.to_time = ref2[1];
}
return s.$watchGroup(["combined", "combined2"], function(arg) {
var combined, combined2;
combined = arg[0], combined2 = arg[1];
return s.model = [moment(s.from_date).format("YYYYMMDD"), moment(s.to_date).format("YYYYMMDD"), moment(s.from_time).format("HHmmss"), moment(s.to_time).format("HHmmss")];
});
}
]
}
};
module.exports = {
spWithin,
spContext,
modernAttrs,
modernAttrs2,
defaultContext,
attrs,
sattrs,
modernAttrsOld,
setOptions,
liteOptions,
lexClassesText,
readability,
fsv_aldrelagar,
fsv_yngrelagar
}