term-row.js
2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/*globals TaxonomyTranslation, _, Backbone */
(function () {
"use strict";
TaxonomyTranslation.models.TermRow = Backbone.Model.extend({
defaults: function () {
return {
terms: {},
trid: false,
allTranslated: false,
parents: {}
};
},
idAttribute: "trid",
initialize: function (data, options) {
var self = this;
self.updateAllTranslated();
var parents = {};
_.each(data.terms, function (term, lang) {
parents[lang] = term.get("parent");
});
self.set("parents", parents);
},
parentOf: function (parentID) {
var self = this;
var parents = self.get("parents");
var res = false;
_.each(parents, function (parent, lang) {
if (parent == parentID) {
res = true;
return res;
}
});
return res;
},
add: function (term) {
if (!this.get("trid") && term.get("trid")) {
this.set("trid", term.get("trid"), {silent: true});
}
if (term.get("trid") == this.get("trid") && term.get("language_code") && term.get("name")) {
var terms = this.get("terms");
terms[term.get("language_code")] = term;
this.set("terms", terms, {silent: true});
}
this.updateAllTranslated();
},
updateAllTranslated: function () {
var self = this;
var terms = self.get("terms");
self.set("allTranslated", true, {silent: true});
_.each(TaxonomyTranslation.util.langCodes, function (lang) {
if (terms === undefined || terms[lang] === undefined || !terms[lang].get("name")) {
self.set("allTranslated", false, {silent: true});
}
});
return self;
},
allTermsTranslated: function () {
this.updateAllTranslated();
return this.get("allTranslated");
},
translatedIn: function (lang) {
var self = this;
var terms = self.get("terms");
var res = true;
if (terms === undefined || terms[lang] === undefined || !terms[lang].get("name")) {
res = false;
}
return res;
},
matches: function (search) {
var self = this;
var res = false;
_.each(TaxonomyTranslation.util.langCodes, function (lang) {
if (self.matchesInLang(search, lang) === true) {
res = true;
return true;
}
});
return res;
},
matchesInLang: function (search, lang) {
var self = this;
var terms = self.get("terms");
var res = false;
if (
terms !== undefined &&
terms[lang] !== undefined &&
terms[lang].get("name") &&
terms[lang].get("name").toLowerCase().indexOf(search.toLowerCase()) > -1
) {
res = true;
}
return res;
},
unSyncFilter: function () {
var self = this;
var syncData = TaxonomyTranslation.data.syncData;
var terms = self.get("terms");
var res = false;
_.each(syncData, function (correction) {
_.each(TaxonomyTranslation.util.langCodes, function (lang) {
if (terms[lang] !== undefined && correction.translated_id == terms[lang].get('term_taxonomy_id')) {
res = true;
}
});
});
return res;
}
});
})(TaxonomyTranslation);