forked from CGM_Public/pretix_original
* Add "customtime" option * Fix time picker output format * Fix bug in bool_alg * Fix test
124 lines
2.9 KiB
JavaScript
124 lines
2.9 KiB
JavaScript
$(document).ready(function () {
|
|
var TYPEOPS = {
|
|
// Every change to our supported JSON logic must be done
|
|
// * in pretix.base.services.checkin
|
|
// * in pretix.base.models.checkin
|
|
// * in checkinrules.js
|
|
// * in libpretixsync
|
|
'product': {
|
|
'inList': {
|
|
'label': gettext('is one of'),
|
|
'cardinality': 2,
|
|
}
|
|
},
|
|
'variation': {
|
|
'inList': {
|
|
'label': gettext('is one of'),
|
|
'cardinality': 2,
|
|
}
|
|
},
|
|
'datetime': {
|
|
'isBefore': {
|
|
'label': gettext('is before'),
|
|
'cardinality': 2,
|
|
},
|
|
'isAfter': {
|
|
'label': gettext('is after'),
|
|
'cardinality': 2,
|
|
},
|
|
},
|
|
'int': {
|
|
'<': {
|
|
'label': '<',
|
|
'cardinality': 2,
|
|
},
|
|
'<=': {
|
|
'label': '≤',
|
|
'cardinality': 2,
|
|
},
|
|
'>': {
|
|
'label': '>',
|
|
'cardinality': 2,
|
|
},
|
|
'>=': {
|
|
'label': '≥',
|
|
'cardinality': 2,
|
|
},
|
|
'==': {
|
|
'label': '=',
|
|
'cardinality': 2,
|
|
},
|
|
'!=': {
|
|
'label': '≠',
|
|
'cardinality': 2,
|
|
},
|
|
},
|
|
};
|
|
var VARS = {
|
|
'product': {
|
|
'label': gettext('Product'),
|
|
'type': 'product',
|
|
},
|
|
'variation': {
|
|
'label': gettext('Product variation'),
|
|
'type': 'variation',
|
|
},
|
|
'now': {
|
|
'label': gettext('Current date and time'),
|
|
'type': 'datetime',
|
|
},
|
|
'entries_number': {
|
|
'label': gettext('Number of previous entries'),
|
|
'type': 'int',
|
|
},
|
|
'entries_today': {
|
|
'label': gettext('Number of previous entries since midnight'),
|
|
'type': 'int',
|
|
},
|
|
'entries_days': {
|
|
'label': gettext('Number of days with a previous entry'),
|
|
'type': 'int',
|
|
},
|
|
};
|
|
|
|
Vue.component('checkin-rule', CheckinRule.default);
|
|
var app = new Vue({
|
|
el: '#rules-editor',
|
|
components: {
|
|
CheckinRulesEditor: CheckinRulesEditor.default,
|
|
CheckinRulesVisualization: CheckinRulesVisualization.default,
|
|
},
|
|
data: function () {
|
|
return {
|
|
rules: {},
|
|
TYPEOPS: TYPEOPS,
|
|
VARS: VARS,
|
|
texts: {
|
|
and: gettext('All of the conditions below (AND)'),
|
|
or: gettext('At least one of the conditions below (OR)'),
|
|
date_from: gettext('Event start'),
|
|
date_to: gettext('Event end'),
|
|
date_admission: gettext('Event admission'),
|
|
date_custom: gettext('custom date and time'),
|
|
date_customtime: gettext('custom time'),
|
|
date_tolerance: gettext('Tolerance (minutes)'),
|
|
condition_add: gettext('Add condition'),
|
|
minutes: gettext('minutes'),
|
|
},
|
|
hasRules: false,
|
|
};
|
|
},
|
|
created: function () {
|
|
this.rules = JSON.parse($("#id_rules").val());
|
|
},
|
|
watch: {
|
|
rules: {
|
|
deep: true,
|
|
handler: function (newval) {
|
|
$("#id_rules").val(JSON.stringify(newval));
|
|
}
|
|
},
|
|
}
|
|
})
|
|
});
|