|
|
@ -0,0 +1,151 @@
|
|||
var express = require('express');
|
||||
var path = require('path');
|
||||
var favicon = require('serve-favicon');
|
||||
var logger = require('morgan');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var bodyParser = require('body-parser');
|
||||
var parseurl = require('parseurl')
|
||||
|
||||
var session = require('express-session');
|
||||
var filestore = require('session-file-store')(session);
|
||||
|
||||
var routes = require('./routes/index');
|
||||
var events = require('./routes/events');
|
||||
var tevents = require('./routes/tevents');
|
||||
var away = require('./routes/away');
|
||||
var keep_in_mind = require('./routes/keep_in_mind');
|
||||
var todo = require('./routes/todo');
|
||||
var vehicle_use = require('./routes/vehicle_use');
|
||||
|
||||
var pcalpub = require("./routes/pcalpub");
|
||||
|
||||
var jsonsrv = require('./lib/jsonsrv');
|
||||
|
||||
var app = express();
|
||||
|
||||
// view engine setup
|
||||
app.set('views', path.join(__dirname, 'views'));
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
// uncomment after placing your favicon in /public
|
||||
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
|
||||
app.use(logger('dev'));
|
||||
app.use(bodyParser.json());
|
||||
app.use(bodyParser.urlencoded({ extended: false }));
|
||||
app.use(cookieParser());
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
app.locals.session = session({
|
||||
resave: false, // don't save session if unmodified
|
||||
saveUninitialized: false, // don't create session until something stored
|
||||
secret: 'shhhh, very secret',
|
||||
store: new filestore({})
|
||||
});
|
||||
|
||||
app.use(app.locals.session);
|
||||
|
||||
error_func_ = function(req, res, error)
|
||||
{
|
||||
console.log(error);
|
||||
res.redirect('/login');
|
||||
}
|
||||
|
||||
app.use(function restrict(req, res, next)
|
||||
{
|
||||
// get the url pathname
|
||||
var pathname = parseurl(req).pathname;
|
||||
|
||||
if (req.session.user || pathname === '/login')
|
||||
{
|
||||
next();
|
||||
}
|
||||
else
|
||||
{
|
||||
if(req.cookies['pfis_login_c'] !== undefined)
|
||||
{
|
||||
var pfis_login_c = req.cookies.pfis_login_c;
|
||||
|
||||
console.log("Got pfis_login_c: ", pfis_login_c);
|
||||
|
||||
var data =
|
||||
{
|
||||
"request" : "auth_from_cookie",
|
||||
"pfis_login_c" : pfis_login_c
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv(req, res, data,
|
||||
function(req, res, result) {
|
||||
console.log(result);
|
||||
if(result.authresult === "OK")
|
||||
{
|
||||
req.session.regenerate(function(){
|
||||
req.session.user = result.username;
|
||||
req.session.sessionuuid = result.sessionuuid;
|
||||
console.log('rest session.days');
|
||||
req.session.cache = { days : {} };
|
||||
req.session.messages = [];
|
||||
next();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log("Cookie led not to user; redirecting to login!");
|
||||
res.redirect("/login");
|
||||
}
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
else
|
||||
res.redirect('/login');
|
||||
/*req.session.regenerate(function(){
|
||||
req.session.user = "peter";
|
||||
req.session.sessionuuid = "1c8198b4-e488-4975-a8ff-9dd99e9f324a";
|
||||
res.redirect("/");
|
||||
});*/
|
||||
}
|
||||
});
|
||||
|
||||
app.use('/', routes);
|
||||
app.use('/event', events);
|
||||
app.use('/tevent', tevents);
|
||||
app.use('/away', away);
|
||||
app.use('/keep_in_mind', keep_in_mind);
|
||||
app.use('/todo', todo);
|
||||
app.use('/vehicle_use', vehicle_use);
|
||||
|
||||
app.use('/pcalpub', pcalpub);
|
||||
|
||||
// catch 404 and forward to error handler
|
||||
app.use(function(req, res, next) {
|
||||
var err = new Error('Not Found');
|
||||
err.status = 404;
|
||||
next(err);
|
||||
});
|
||||
|
||||
// error handlers
|
||||
|
||||
// development error handler
|
||||
// will print stacktrace
|
||||
if (app.get('env') === 'development') {
|
||||
app.use(function(err, req, res, next) {
|
||||
res.status(err.status || 500);
|
||||
res.render('error', {
|
||||
message: err.message,
|
||||
error: err
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// production error handler
|
||||
// no stacktraces leaked to user
|
||||
app.use(function(err, req, res, next) {
|
||||
res.status(err.status || 500);
|
||||
res.render('error', {
|
||||
message: err.message,
|
||||
error: {}
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = app;
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
function create_empty_thereafter() {
|
||||
return {
|
||||
name : "",
|
||||
name_secondary : "",
|
||||
visibility : "publ",
|
||||
end : "",
|
||||
end_is_vague : false,
|
||||
locations: [],
|
||||
involved : [],
|
||||
involved_roles : [],
|
||||
description : "",
|
||||
annotations : ""
|
||||
};
|
||||
}
|
||||
|
||||
exports.create_empty_thereafter = create_empty_thereafter;
|
||||
|
||||
function copy_thereafter(dest, source) {
|
||||
dest.uuid = source.uuid;
|
||||
dest.name = source.name;
|
||||
dest.name_secondary = source.name_secondary;
|
||||
dest.visibility = source.visibility;
|
||||
dest.end = source.end;
|
||||
dest.end_is_vague = source.end_is_vague;
|
||||
dest.locations = source.locations;
|
||||
dest.involved = source.involved;
|
||||
dest.involved_roles = source.involved_roles;
|
||||
dest.description = source.description;
|
||||
dest.annotations = source.annotations;
|
||||
}
|
||||
|
||||
exports.copy_thereafter = copy_thereafter;
|
||||
|
||||
function create_empty_event() {
|
||||
var event = create_empty_thereafter();
|
||||
event.punit = { name : "Rödental St. Hedwig", dn : "eb_bamberg/d_coburg/sb_cosl/p_roedental" };
|
||||
event.start = "";
|
||||
return event;
|
||||
}
|
||||
|
||||
exports.create_empty_event = create_empty_event;
|
||||
|
||||
function copy_event_without_thereafter(dest, source) {
|
||||
copy_thereafter(dest, source);
|
||||
dest.punit = source.punit;
|
||||
dest.start = source.start;
|
||||
}
|
||||
|
||||
exports.copy_event_without_thereafter = copy_event_without_thereafter;
|
||||
|
||||
function add_uids_to_event(ev) {
|
||||
for(var idx in ev.involved)
|
||||
{
|
||||
ev.involved[idx].uid = generateUID();
|
||||
console.log(ev.involved[idx]);
|
||||
}
|
||||
for(var idx in ev.involved_roles)
|
||||
{
|
||||
ev.involved_roles[idx].uid = generateUID();
|
||||
|
||||
for(var inv_idx in ev.involved_roles[idx].involved)
|
||||
ev.involved_roles[idx].involved[inv_idx].uid = generateUID();
|
||||
}
|
||||
|
||||
for(var idx in ev.locations)
|
||||
{
|
||||
ev.locations[idx].uid = generateUID();
|
||||
console.log(ev.locations[idx]);
|
||||
}
|
||||
}
|
||||
|
||||
exports.add_uids_to_event = add_uids_to_event;
|
||||
|
||||
function delete_event_if_nothing_is_edited(day, event) {
|
||||
if(event.in_editing)
|
||||
return;
|
||||
|
||||
console.log(Object.keys(event.thereafter).length);
|
||||
|
||||
if(Object.keys(event.thereafter).length === 0) {
|
||||
console.log('DELETING EVENT: ', event.uuid);
|
||||
delete day.events[event.uuid];
|
||||
}
|
||||
}
|
||||
|
||||
exports.delete_event_if_nothing_is_edited = delete_event_if_nothing_is_edited;
|
||||
|
|
@ -0,0 +1,243 @@
|
|||
var net = require('net');
|
||||
|
||||
var pfisjsonhost = "127.0.0.1";
|
||||
|
||||
console.log(process.env["NODE_ENV"])
|
||||
if (process.env["NODE_ENV"] === 'production') {
|
||||
//pfisjsonhost = "127.0.0.1";
|
||||
pfisjsonhost = "10.0.0.4";
|
||||
}
|
||||
console.log(pfisjsonhost);
|
||||
|
||||
function byteCount(s) {
|
||||
return encodeURI(s).split(/%(?:u[0-9A-F]{2})?[0-9A-F]{2}|./).length - 1;
|
||||
}
|
||||
|
||||
function format_json_for_send(data) {
|
||||
var str = JSON.stringify(data);
|
||||
//console.log(str);
|
||||
|
||||
var n = str.length;
|
||||
//console.log("str.length: ", n);
|
||||
n = byteCount(str);
|
||||
//console.log("bytes : ", n);
|
||||
/*var n_hex = n.toString(16);
|
||||
var n_str = "" + n_hex;
|
||||
|
||||
var n_msg = ('00000000'+n_str).substring(n_str.length);
|
||||
|
||||
console.log(n_msg + str);
|
||||
|
||||
return n_msg + str;*/
|
||||
|
||||
return str + "__END_OF_JSON__";
|
||||
}
|
||||
|
||||
exports.format_json_for_send = format_json_for_send;
|
||||
|
||||
exports.do_jsonsrv = function(req, res, data, result_func, error_func) {
|
||||
var client = new net.Socket();
|
||||
var input = '';
|
||||
|
||||
client.connect(1337, pfisjsonhost, function() {
|
||||
/*client.setNoDelay(true);*/
|
||||
console.log('Connected');
|
||||
|
||||
client.write(format_json_for_send(data));
|
||||
});
|
||||
|
||||
client.on('data', function(data) {
|
||||
input += data;
|
||||
});
|
||||
|
||||
client.on('end', function() {
|
||||
var result = JSON.parse(input);
|
||||
|
||||
result_func(req, res, result);
|
||||
|
||||
client.destroy(); // kill client after server's response
|
||||
});
|
||||
|
||||
client.on('error', function(err) {
|
||||
console.log(err);
|
||||
error_func(req, res, err);
|
||||
});
|
||||
|
||||
client.on('close', function() {
|
||||
console.log('Connection closed');
|
||||
});
|
||||
}
|
||||
|
||||
function buffer_to_json(input, result_func, error_func) {
|
||||
try {
|
||||
var result = JSON.parse(input);
|
||||
result_func(result);
|
||||
}catch(err) {
|
||||
console.log("--------------------------------------");
|
||||
console.log("--------------------------------------");
|
||||
console.log("ERROR RETRIEVING DATA VOM PFISJSONSRV!");
|
||||
console.log("--------------------------------------");
|
||||
console.log(err);
|
||||
console.log("--------------------------------------");
|
||||
console.log("INPUT --------------------------------");
|
||||
console.log(input);
|
||||
console.log("--------------------------------------");
|
||||
error_func(err);
|
||||
}
|
||||
}
|
||||
|
||||
exports.do_jsonsrv2 = function(data, result_func, error_func) {
|
||||
|
||||
var client = new net.Socket();
|
||||
var input = '';
|
||||
|
||||
client.connect(1337, pfisjsonhost, function() {
|
||||
/*client.setNoDelay(true);*/
|
||||
console.log('Connected');
|
||||
|
||||
client.write(format_json_for_send(data));
|
||||
});
|
||||
|
||||
client.on('data', function(data) {
|
||||
input += data;
|
||||
});
|
||||
|
||||
client.on('end', function() {
|
||||
//console.log("input: ", input);
|
||||
buffer_to_json(input, result_func, error_func);
|
||||
|
||||
client.destroy(); // kill client after server's response
|
||||
});
|
||||
|
||||
client.on('error', function(err) {
|
||||
error_func(err);
|
||||
});
|
||||
|
||||
client.on('close', function() {
|
||||
console.log('Connection closed');
|
||||
});
|
||||
}
|
||||
|
||||
exports.do_jsonsrv_steppedanswer = function(data, step_func, result_func, error_func) {
|
||||
var client = new net.Socket();
|
||||
var input = '';
|
||||
|
||||
client.connect(1337, pfisjsonhost, function() {
|
||||
/*client.setNoDelay(true);*/
|
||||
console.log('Connected');
|
||||
|
||||
client.write(format_json_for_send(data));
|
||||
});
|
||||
|
||||
client.on('data', function(data) {
|
||||
console.log('DATA RECEIVED: ', "" + data);
|
||||
console.log('DATE END');
|
||||
|
||||
var stepidx = data.indexOf("__STEP__");
|
||||
if(stepidx === -1) {
|
||||
input += data;
|
||||
return;
|
||||
}
|
||||
|
||||
input += data.slice(0, stepidx);
|
||||
|
||||
do{
|
||||
console.log("STEP COMPLETE: ", input);
|
||||
console.log("STEP END______");
|
||||
buffer_to_json(input, step_func, error_func);
|
||||
|
||||
// BEGIN NEXT STEP:
|
||||
console.log('BEGINN NEXT STEP');
|
||||
var oldstepindex = stepidx + 8;
|
||||
stepidx = data.indexOf("__STEP__", oldstepindex);
|
||||
if(stepidx === -1)
|
||||
stepidx = data.length;
|
||||
input = data.slice(oldstepindex, stepidx);
|
||||
console.log("NEW STEP START: ", ""+ input);
|
||||
console.log("NEW STEP END");
|
||||
}while(stepidx < data.length)
|
||||
});
|
||||
|
||||
client.on('end', function() {
|
||||
//console.log("input: ", input);
|
||||
buffer_to_json(input, result_func, error_func);
|
||||
|
||||
client.destroy(); // kill client after server's response
|
||||
});
|
||||
|
||||
client.on('error', function(err) {
|
||||
error_func(err);
|
||||
});
|
||||
|
||||
client.on('close', function() {
|
||||
console.log('Connection closed');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
exports.handle_jsonconnectionerror = function(req, res, err) {
|
||||
console.log("-----------------------------");
|
||||
console.log("-----------------------------");
|
||||
console.log("ERROR CONNECTING PFISJSONSRV!");
|
||||
console.log("-----------------------------");
|
||||
console.log(err);
|
||||
console.log("-----------------------------");
|
||||
|
||||
// Connection-Errors are hard errors, so we display an hard error
|
||||
res.status(err.status || 500);
|
||||
res.render('error', {
|
||||
message: err.message,
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
exports.handle_common_jsonsrverrors = function (req, res, result) {
|
||||
if(result.result === "ERROR_invalid_session") {
|
||||
|
||||
req.session.destroy();
|
||||
|
||||
res.render("errorview", { messages : result.messages });
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(result.result == "ERROR_download_file_not_found")
|
||||
{
|
||||
var err = new Error('Not Found');
|
||||
err.status = 404;
|
||||
res.render('error', {
|
||||
message: err.message,
|
||||
error: err
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
req.session.messages = result.messages.concat(req.session.messages);
|
||||
|
||||
if(req.session.messages.length === 0)
|
||||
req.session.messages.push({type: "danger", title: "Systemfehler", message: "Es wurde ein Fehler in der Verarbeitung festgestellt, aber keine Fehlermeldung erstellt."});
|
||||
|
||||
if(result.result === "ERROR_could_not_create_task")
|
||||
{
|
||||
res.render("errorview", { messages : result.messages });
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(result.result === "ERROR_could_not_init_task")
|
||||
{
|
||||
res.render("errorview", { messages : result.messages });
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
req.session.messages.push({type: "info", title: "Umleitung erfolgt", message: "Aufgrund vorstehender Fehler in der Verarbeitung Ihrer Anfrage wurde Sie auf die Startseite umgeleiet."});
|
||||
|
||||
var date = "";
|
||||
if(req.params.date)
|
||||
date = "/"+req.params.date;
|
||||
else if(req.params.day)
|
||||
date = "/"+req.params.day;
|
||||
|
||||
res.redirect('/day' + date + "?back=false");
|
||||
}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
exports.do_day_renderparams_from_result = function(result, session) {
|
||||
var d = new Date(result.date.date);
|
||||
d.setHours(10); // neccessary, so that in March the next day after the last sunday is really the next day and not today (Sommerzeit-Umstellung!?)
|
||||
d.setDate(d.getDate()+1);
|
||||
var tomorrow = d.toISOString().slice(0,10);
|
||||
d.setDate(d.getDate()-2);
|
||||
var yesterday = d.toISOString().slice(0,10);
|
||||
d.setDate(d.getDate()+8);
|
||||
var next_week = d.toISOString().slice(0,10);
|
||||
d.setDate(d.getDate()-14);
|
||||
var last_week = d.toISOString().slice(0,10);
|
||||
|
||||
console.log(result.date.date);
|
||||
console.log(tomorrow);
|
||||
console.log(next_week);
|
||||
|
||||
var messages = [];
|
||||
|
||||
if(result.result === "OK_invalid_date") {
|
||||
messages.push({ type: "danger",
|
||||
title: "Eingabefehler:",
|
||||
message: "Das angegeben Datum konnte nicht interpretiert werden! Es wird auf 'heute' ausgewichen!"
|
||||
});
|
||||
}
|
||||
|
||||
messages = messages.concat(session.messages);
|
||||
session.messages = [];
|
||||
|
||||
return { date : result.date,
|
||||
last_week : last_week,
|
||||
yesterday : yesterday,
|
||||
tomorrow : tomorrow,
|
||||
next_week : next_week,
|
||||
litinfo : result.litinfo,
|
||||
parishcal: result.parishcal,
|
||||
messages: messages,
|
||||
sessionuuid : session.sessionuuid
|
||||
};
|
||||
}
|
||||
|
||||
exports.do_week_renderparams_from_result = function(result, session) {
|
||||
var d = new Date(result.basedate);
|
||||
d.setDate(d.getDate()+7);
|
||||
var next_week = d.toISOString().slice(0,10);
|
||||
d.setDate(d.getDate()-14);
|
||||
var last_week = d.toISOString().slice(0,10);
|
||||
|
||||
var messages = [];
|
||||
|
||||
if(result.result === "OK_invalid_date") {
|
||||
messages.push({ type: "danger",
|
||||
title: "Eingabefehler:",
|
||||
message: "Das angegeben Datum konnte nicht interpretiert werden! Es wird auf die aktuelle Woche ausgewichen!"
|
||||
});
|
||||
}
|
||||
|
||||
messages = messages.concat(session.messages);
|
||||
session.messages = [];
|
||||
|
||||
return { interval : result.interval,
|
||||
basedate : result.basedate,
|
||||
days : result.days,
|
||||
last_week : last_week,
|
||||
next_week : next_week,
|
||||
messages: messages
|
||||
};
|
||||
}
|
||||
|
||||
exports.redirect_after_editing = function(req, res) {
|
||||
switch(req.query.pcalview) {
|
||||
case 'timeline': {
|
||||
res.redirect("/timeline/" + req.params.day);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
res.redirect("/day/" + req.params.day + "?back=false");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
exports.create_empty_away = function(uuid) {
|
||||
var away = { uuid: uuid, punit : { name : "Rödental St. Hedwig", dn : "eb_bamberg/d_coburg/sb_cosl/p_roedental" }, name: '', involveddb_id: '', reason: ''};
|
||||
return away;
|
||||
}
|
||||
|
||||
exports.create_empty_keep_in_mind = function(uuid) {
|
||||
var keep_in_mind = { uuid: uuid, punit : { name : "Rödental St. Hedwig", dn : "eb_bamberg/d_coburg/sb_cosl/p_roedental" }, name: '', description: ''};
|
||||
return keep_in_mind;
|
||||
}
|
||||
|
||||
exports.create_empty_todo = function(uuid) {
|
||||
var todo = { uuid: uuid, punit : { name : "Rödental St. Hedwig", dn : "eb_bamberg/d_coburg/sb_cosl/p_roedental" }, name: '', description: '', involved: []};
|
||||
return todo;
|
||||
}
|
||||
|
||||
exports.create_empty_vehicle_use = function(uuid) {
|
||||
var todo = { uuid: uuid, punit : { name : "Rödental St. Hedwig", dn : "eb_bamberg/d_coburg/sb_cosl/p_roedental" }, name: '', description: '', involved: [], vehicle_id: "r_pfarrbus"};
|
||||
return todo;
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"name": "pfisjs",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "node ./bin/www"
|
||||
},
|
||||
"dependencies": {
|
||||
"body-parser": "^1.18.3",
|
||||
"connect": "^3.6.6",
|
||||
"cookie": "^0.3.0",
|
||||
"cookie-parser": "^1.4.3",
|
||||
"debug": "~4.1.0",
|
||||
"express": "^4.16.4",
|
||||
"express-session": "^1.15.6",
|
||||
"express-socket.io-session": "^1.3.5",
|
||||
"jade": "^1.11.0",
|
||||
"morgan": "~1.9.1",
|
||||
"serve-favicon": "~2.5.0",
|
||||
"session-file-store": "^1.2.0",
|
||||
"socket.io": "^2.2.0",
|
||||
"tinymce": "^4.9.2"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,288 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata></metadata>
|
||||
<defs>
|
||||
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
|
||||
<font-face units-per-em="1200" ascent="960" descent="-240" />
|
||||
<missing-glyph horiz-adv-x="500" />
|
||||
<glyph horiz-adv-x="0" />
|
||||
<glyph horiz-adv-x="400" />
|
||||
<glyph unicode=" " />
|
||||
<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
|
||||
<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode=" " />
|
||||
<glyph unicode="¥" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
|
||||
<glyph unicode=" " horiz-adv-x="650" />
|
||||
<glyph unicode=" " horiz-adv-x="1300" />
|
||||
<glyph unicode=" " horiz-adv-x="650" />
|
||||
<glyph unicode=" " horiz-adv-x="1300" />
|
||||
<glyph unicode=" " horiz-adv-x="433" />
|
||||
<glyph unicode=" " horiz-adv-x="325" />
|
||||
<glyph unicode=" " horiz-adv-x="216" />
|
||||
<glyph unicode=" " horiz-adv-x="216" />
|
||||
<glyph unicode=" " horiz-adv-x="162" />
|
||||
<glyph unicode=" " horiz-adv-x="260" />
|
||||
<glyph unicode=" " horiz-adv-x="72" />
|
||||
<glyph unicode=" " horiz-adv-x="260" />
|
||||
<glyph unicode=" " horiz-adv-x="325" />
|
||||
<glyph unicode="€" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
|
||||
<glyph unicode="₽" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
|
||||
<glyph unicode="−" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="⌛" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
|
||||
<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
|
||||
<glyph unicode="☁" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
|
||||
<glyph unicode="⛺" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
|
||||
<glyph unicode="✉" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
|
||||
<glyph unicode="✏" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
|
||||
<glyph unicode="" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
|
||||
<glyph unicode="" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
|
||||
<glyph unicode="" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
|
||||
<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
|
||||
<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
|
||||
<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
|
||||
<glyph unicode="" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
|
||||
<glyph unicode="" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
|
||||
<glyph unicode="" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
|
||||
<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
|
||||
<glyph unicode="" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
|
||||
<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
|
||||
<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
|
||||
<glyph unicode="" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
|
||||
<glyph unicode="" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
|
||||
<glyph unicode="" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
|
||||
<glyph unicode="" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
|
||||
<glyph unicode="" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
|
||||
<glyph unicode="" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
|
||||
<glyph unicode="" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
|
||||
<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
|
||||
<glyph unicode="" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
|
||||
<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
|
||||
<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
|
||||
<glyph unicode="" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
|
||||
<glyph unicode="" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
|
||||
<glyph unicode="" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
|
||||
<glyph unicode="" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
|
||||
<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
|
||||
<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
|
||||
<glyph unicode="" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
|
||||
<glyph unicode="" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
|
||||
<glyph unicode="" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
|
||||
<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
|
||||
<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
|
||||
<glyph unicode="" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
|
||||
<glyph unicode="" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
|
||||
<glyph unicode="" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
|
||||
<glyph unicode="" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
|
||||
<glyph unicode="" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
|
||||
<glyph unicode="" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
|
||||
<glyph unicode="" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
|
||||
<glyph unicode="" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
|
||||
<glyph unicode="" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
|
||||
<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
|
||||
<glyph unicode="" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
|
||||
<glyph unicode="" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
|
||||
<glyph unicode="" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
|
||||
<glyph unicode="" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
|
||||
<glyph unicode="" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
|
||||
<glyph unicode="" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
|
||||
<glyph unicode="" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
|
||||
<glyph unicode="" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
|
||||
<glyph unicode="" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
|
||||
<glyph unicode="" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
|
||||
<glyph unicode="" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
|
||||
<glyph unicode="" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
|
||||
<glyph unicode="" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
|
||||
<glyph unicode="" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
|
||||
<glyph unicode="" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
|
||||
<glyph unicode="" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
|
||||
<glyph unicode="" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
|
||||
<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
|
||||
<glyph unicode="" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
|
||||
<glyph unicode="" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
|
||||
<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
|
||||
<glyph unicode="" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
|
||||
<glyph unicode="" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
|
||||
<glyph unicode="" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
|
||||
<glyph unicode="" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
|
||||
<glyph unicode="" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
|
||||
<glyph unicode="" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
|
||||
<glyph unicode="" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
|
||||
<glyph unicode="" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
|
||||
<glyph unicode="" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
|
||||
<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
|
||||
<glyph unicode="" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
|
||||
<glyph unicode="" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
|
||||
<glyph unicode="" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
|
||||
<glyph unicode="" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
|
||||
<glyph unicode="" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
|
||||
<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
|
||||
<glyph unicode="" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
|
||||
<glyph unicode="" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
|
||||
<glyph unicode="" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
|
||||
<glyph unicode="" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
|
||||
<glyph unicode="" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
|
||||
<glyph unicode="" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
|
||||
<glyph unicode="" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
|
||||
<glyph unicode="" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
|
||||
<glyph unicode="" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
|
||||
<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
|
||||
<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
|
||||
<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
|
||||
<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
|
||||
<glyph unicode="" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
|
||||
<glyph unicode="" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
|
||||
<glyph unicode="" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
|
||||
<glyph unicode="" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
|
||||
<glyph unicode="" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
|
||||
<glyph unicode="" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
|
||||
<glyph unicode="" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
|
||||
<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
|
||||
<glyph unicode="" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
|
||||
<glyph unicode="" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
|
||||
<glyph unicode="" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
|
||||
<glyph unicode="" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
|
||||
<glyph unicode="" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
|
||||
<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
|
||||
<glyph unicode="" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
|
||||
<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
|
||||
<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
|
||||
<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
|
||||
<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
|
||||
<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
|
||||
<glyph unicode="" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
|
||||
<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
|
||||
<glyph unicode="" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
|
||||
<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
|
||||
<glyph unicode="" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
|
||||
<glyph unicode="" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
|
||||
<glyph unicode="" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
|
||||
<glyph unicode="" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
|
||||
<glyph unicode="" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
|
||||
<glyph unicode="" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
|
||||
<glyph unicode="" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
|
||||
<glyph unicode="" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
|
||||
<glyph unicode="" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
|
||||
<glyph unicode="" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
|
||||
<glyph unicode="" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
|
||||
<glyph unicode="" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
|
||||
<glyph unicode="" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
|
||||
<glyph unicode="" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
|
||||
<glyph unicode="" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
|
||||
<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
|
||||
<glyph unicode="" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
|
||||
<glyph unicode="" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
|
||||
<glyph unicode="" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
|
||||
<glyph unicode="" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
|
||||
<glyph unicode="" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
|
||||
<glyph unicode="" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
|
||||
<glyph unicode="" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
|
||||
<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
|
||||
<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
|
||||
<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
|
||||
<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
|
||||
<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
|
||||
<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
|
||||
<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
|
||||
<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
|
||||
<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
|
||||
<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
|
||||
<glyph unicode="" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
|
||||
<glyph unicode="" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
|
||||
<glyph unicode="" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
|
||||
<glyph unicode="" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
|
||||
<glyph unicode="" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
|
||||
<glyph unicode="" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
|
||||
<glyph unicode="" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
|
||||
<glyph unicode="" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
|
||||
<glyph unicode="" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
|
||||
<glyph unicode="" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
|
||||
<glyph unicode="" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
|
||||
<glyph unicode="" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
|
||||
<glyph unicode="" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
|
||||
<glyph unicode="" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
|
||||
<glyph unicode="" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
|
||||
<glyph unicode="" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
|
||||
<glyph unicode="" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
|
||||
<glyph unicode="" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
|
||||
<glyph unicode="" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
|
||||
<glyph unicode="" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
|
||||
<glyph unicode="" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
|
||||
<glyph unicode="" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
|
||||
<glyph unicode="" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
|
||||
<glyph unicode="" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
|
||||
<glyph unicode="" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
|
||||
<glyph unicode="" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
|
||||
<glyph unicode="" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
|
||||
<glyph unicode="" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
|
||||
<glyph unicode="" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
|
||||
<glyph unicode="" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
|
||||
<glyph unicode="" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
|
||||
<glyph unicode="" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
|
||||
<glyph unicode="" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
|
||||
<glyph unicode="" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
|
||||
<glyph unicode="" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
|
||||
<glyph unicode="" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
|
||||
<glyph unicode="" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
|
||||
<glyph unicode="" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
|
||||
<glyph unicode="" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
|
||||
<glyph unicode="" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
|
||||
<glyph unicode="" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
|
||||
<glyph unicode="" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
|
||||
<glyph unicode="" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
|
||||
<glyph unicode="" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
|
||||
<glyph unicode="" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
|
||||
<glyph unicode="" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
|
||||
<glyph unicode="" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
|
||||
<glyph unicode="" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
|
||||
<glyph unicode="" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
|
||||
<glyph unicode="" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
|
||||
<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
|
||||
<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
|
||||
</font>
|
||||
</defs></svg>
|
||||
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 685 B |
|
After Width: | Height: | Size: 831 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 541 B |
|
After Width: | Height: | Size: 794 B |
|
|
@ -0,0 +1,4 @@
|
|||
[Dolphin]
|
||||
Timestamp=2016,9,3,17,56,47
|
||||
Version=3
|
||||
ViewMode=1
|
||||
|
|
@ -0,0 +1 @@
|
|||
!function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fre","Sam"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",monthsTitle:"Monate",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
/*
|
||||
* jquery-easy-loading - v1.2.0
|
||||
* Easily add and manipulate loading states of any element on the page
|
||||
* http://github.com/CarlosBonetti/jquery-loading
|
||||
*
|
||||
* Made by Carlos Bonetti <carlosb_bc@hotmail.com>
|
||||
* Under MIT License
|
||||
*/
|
||||
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){var d;return void 0===c&&("undefined"!=typeof window?(c=require("jquery"),d=window):(c=require("jquery")(b),d=b)),a(c,d),c}:a(jQuery,window)}(function(a,b,c){var d=function(b,c){this.element=b,this.settings=a.extend({},d.defaults,c),this.settings.fullPage=this.element.is("body"),this.init(),this.settings.start&&this.start()};d.defaults={overlay:c,zIndex:c,message:"Loading...",theme:"light",shownClass:"loading-shown",hiddenClass:"loading-hidden",stoppable:!1,start:!0,onStart:function(a){a.overlay.fadeIn(150)},onStop:function(a){a.overlay.fadeOut(150)},onClick:function(){}},d.setDefaults=function(b){d.defaults=a.extend({},d.defaults,b)},a.extend(d.prototype,{init:function(){this.isActive=!1,this.overlay=this.settings.overlay||this.createOverlay(),this.resize(),this.attachMethodsToExternalEvents(),this.attachOptionsHandlers()},createOverlay:function(){var b=a('<div class="loading-overlay loading-theme-'+this.settings.theme+'"><div class="loading-overlay-content">'+this.settings.message+"</div></div>").addClass(this.settings.hiddenClass).hide().appendTo("body"),c=this.element.attr("id");return c&&b.attr("id",c+"_loading-overlay"),b},attachMethodsToExternalEvents:function(){var c=this;c.element.on("loading.start",function(){c.overlay.removeClass(c.settings.hiddenClass).addClass(c.settings.shownClass)}),c.element.on("loading.stop",function(){c.overlay.removeClass(c.settings.shownClass).addClass(c.settings.hiddenClass)}),c.settings.stoppable&&c.overlay.on("click",function(){c.stop()}),c.overlay.on("click",function(){c.element.trigger("loading.click",c)}),a(b).on("resize",function(){c.resize()}),a(function(){c.resize()})},attachOptionsHandlers:function(){var a=this;a.element.on("loading.start",function(b,c){a.settings.onStart(c)}),a.element.on("loading.stop",function(b,c){a.settings.onStop(c)}),a.element.on("loading.click",function(b,c){a.settings.onClick(c)})},calcZIndex:function(){return this.settings.zIndex!==c?this.settings.zIndex:(parseInt(this.element.css("z-index"))||0)+1+this.settings.fullPage},resize:function(){var a=this,b=a.element,c=b.outerWidth(),d=b.outerHeight();this.settings.fullPage&&(d="100%",c="100%"),this.overlay.css({position:a.settings.fullPage?"fixed":"absolute",zIndex:a.calcZIndex(),top:b.offset().top,left:b.offset().left,width:c,height:d})},start:function(){this.isActive=!0,this.element.trigger("loading.start",this)},stop:function(){this.isActive=!1,this.element.trigger("loading.stop",this)},active:function(){return this.isActive},toggle:function(){this.active()?this.stop():this.start()}});var e="jquery-loading";a.fn.loading=function(b){return this.each(function(){var f=a.data(this,e);f?b===c?f.start():"string"==typeof b?f[b].apply(f):a.data(this,e,new d(a(this),b)):(b===c||"object"==typeof b||"start"===b||"toggle"===b)&&a.data(this,e,new d(a(this),b))})},a.fn.Loading=function(b){var f=a(this).data(e);return f&&b===c||a(this).data(e,f=new d(a(this),b)),f},a.expr[":"].loading=function(b){var c=a.data(b,e);return c?c.active():!1},a.Loading=d});
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
var pcalPentryCloneMoveManager = function(websocket, pcalview) {
|
||||
var _ws = websocket;
|
||||
var _pcalview = pcalview;
|
||||
var _date;
|
||||
var _pentrytype;
|
||||
var _uuid;
|
||||
var _clone_or_move;
|
||||
var _is_active = false;
|
||||
|
||||
_ws.bind('pcal_clone_move_get_parishday_result',function(data){
|
||||
console.log('got_parishday');
|
||||
console.log(data);
|
||||
var html = pentry_clone_move_parishday_template({day: data.day } );
|
||||
$("#pcal_pentry_clone_move_dayinfo").html(html);
|
||||
$("#pcal_pentry_clone_move_scroll_parent").scrollTop(0);
|
||||
});
|
||||
|
||||
_ws.bind('pentry_clone_move_result', function(data){
|
||||
|
||||
var message = errorview_inlay_template({ messages: data.messages, is_error: (data.result === 'OK' ? false : true), session_ended: false});
|
||||
|
||||
saved_messages.push(message);
|
||||
|
||||
pcal_pentry_clone_move_manager.finish();
|
||||
history.back();
|
||||
});
|
||||
|
||||
this.get_date = function() { return _date; }
|
||||
|
||||
this.set_date = function(date) {
|
||||
_date = date;
|
||||
console.log(_date);
|
||||
}
|
||||
|
||||
this.is_active = function() {
|
||||
return _is_active;
|
||||
}
|
||||
|
||||
this.start = function(pentrytype, uuid, clone_or_move) {
|
||||
_is_active = true;
|
||||
_pentrytype = pentrytype;
|
||||
_uuid = uuid;
|
||||
_clone_or_move = clone_or_move;
|
||||
|
||||
console.log('start', _date, _pentrytype, _uuid, _clone_or_move);
|
||||
|
||||
if(_pentrytype === "event" || history.state.direction === 'clone_move')
|
||||
history.replaceState({direction: 'clone_move', pentrytype: _pentrytype, uuid: _uuid, clone_or_move: _clone_or_move, date: _date.date}, document.title, "/"+_pcalview+"/"+_date.date);
|
||||
else
|
||||
history.pushState({direction: 'clone_move', pentrytype: _pentrytype, uuid: _uuid, clone_or_move: _clone_or_move, date: _date.date}, document.title, "/"+_pcalview+"/"+_date.date);
|
||||
|
||||
var pentry = $("[data-pentryuuid="+uuid+"]");
|
||||
|
||||
console.log(pentry);
|
||||
|
||||
if(pentry.length != 1)
|
||||
{
|
||||
console.log('ERROR IN GETTING PENTRY!!!')
|
||||
history.popState();
|
||||
return;
|
||||
}
|
||||
|
||||
var renderdata = { pentrytype : _pentrytype,
|
||||
date : _date,
|
||||
uuid : _uuid
|
||||
};
|
||||
|
||||
switch(clone_or_move) {
|
||||
case "clone":
|
||||
renderdata["clone_or_move"] = "clone";
|
||||
renderdata["clone_or_move_pretty_verb"] = "geklont";
|
||||
renderdata["clone_or_move_pretty_verb2"] = "klonen";
|
||||
renderdata["clone_or_move_pretty_noun"] = "Klonen";
|
||||
break;
|
||||
case "move":
|
||||
renderdata["clone_or_move"] = "move";
|
||||
renderdata["clone_or_move_pretty_verb"] = "verschoben";
|
||||
renderdata["clone_or_move_pretty_verb2"] = "verschieben";
|
||||
renderdata["clone_or_move_pretty_noun"] = "Verschieben";
|
||||
}
|
||||
|
||||
var name = pentry.data('pentryname');
|
||||
var addname = pentry.data("pentryaddname");
|
||||
if(addname.length > 0)
|
||||
name = name + " (" + addname + ")";
|
||||
|
||||
console.log(name);
|
||||
renderdata["pentryname"] = name;
|
||||
|
||||
switch(_pentrytype) {
|
||||
case "event":
|
||||
renderdata["pentrytype_pretty"] = "Ereignis";
|
||||
break;
|
||||
case "away":
|
||||
renderdata["pentrytype_pretty"] = "Abwesenheit";
|
||||
break;
|
||||
case "keep_in_mind":
|
||||
renderdata["pentrytype_pretty"] = "Zu-Beachten";
|
||||
break;
|
||||
case "todo":
|
||||
renderdata["pentrytype_pretty"] = "Zu-Tun";
|
||||
break;
|
||||
case "vehicle_use":
|
||||
renderdata["pentrytype_pretty"] = "Fahrzeugbenutzung";
|
||||
break;
|
||||
}
|
||||
var html = pentry_clone_move_template(renderdata);
|
||||
|
||||
$("#pentry_clone_move_parent").html(html);
|
||||
|
||||
$('#pcal_pentry_clone_move_datepicker').datepicker({format: "yyyy-mm-dd", language: "de", calendarWeeks: true, todayHighlight: true});
|
||||
$("#pcal_pentry_clone_move_datepicker").on("changeDate", function(event) {
|
||||
var d = $("#pcal_pentry_clone_move_datepicker").datepicker('getFormattedDate');
|
||||
console.log('date: ', d);
|
||||
|
||||
$("#pcal_pentry_clone_move_new_date").val(d);
|
||||
|
||||
$("#pcal_pentry_clone_move_alert").hide();
|
||||
|
||||
ws.send('get_parishday', { answer_prefix: "pcal_clone_move_", date: d });
|
||||
});
|
||||
|
||||
$("#form-clonemove").on('submit', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
var new_date = $("#pcal_pentry_clone_move_new_date").val();
|
||||
console.log(new_date);
|
||||
|
||||
if(new_date === _date.date) {
|
||||
$("#pcal_pentry_clone_move_alert").show();
|
||||
return;
|
||||
}
|
||||
|
||||
var data = {
|
||||
"request" : "pentry_clone_move",
|
||||
"type" : _clone_or_move,
|
||||
"date" : _date.date,
|
||||
"pentrytype": _pentrytype,
|
||||
"uuid" : _uuid,
|
||||
"new_date" : new_date
|
||||
}
|
||||
|
||||
console.log(data);
|
||||
|
||||
ws.send('pentry_clone_move', data);
|
||||
});
|
||||
|
||||
$("#pentry_clone_move_parent").show();
|
||||
|
||||
ws.send('get_parishday', { answer_prefix: "pcal_clone_move_", date: _date.date });
|
||||
}
|
||||
|
||||
this.finish = function() {
|
||||
$("#pentry_clone_move_parent").hide();
|
||||
$("#pentry_clone_move_parent").empty();
|
||||
_is_active = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*$("[data-hide]").on("click", function(){
|
||||
$("." + $(this).attr("data-hide")).hide();*/
|
||||
/*
|
||||
* The snippet above will hide all elements with the class specified in data-hide,
|
||||
* i.e: data-hide="alert" will hide all elements with the alert property.
|
||||
*
|
||||
* Xeon06 provided an alternative solution:
|
||||
* $(this).closest("." + $(this).attr("data-hide")).hide();
|
||||
* Use this if are using multiple alerts with the same class since it will only find the closest element
|
||||
*
|
||||
* (From jquery doc: For each element in the set, get the first element that matches the selector by
|
||||
* testing the element itself and traversing up through its ancestors in the DOM tree.)
|
||||
*/
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
// https://gist.github.com/ismasan/299789
|
||||
/*
|
||||
The MIT License (MIT)
|
||||
Copyright (c) 2014 Ismael Celis
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
-------------------------------*/
|
||||
/*
|
||||
Simplified WebSocket events dispatcher (no channels, no users)
|
||||
var socket = new FancyWebSocket();
|
||||
// bind to server events
|
||||
socket.bind('some_event', function(data){
|
||||
alert(data.name + ' says: ' + data.message)
|
||||
});
|
||||
// broadcast events to all connected users
|
||||
socket.send( 'some_event', {name: 'ismael', message : 'Hello world'} );
|
||||
*/
|
||||
|
||||
var PfISWebSocket = function(session, task) {
|
||||
// location.protocol+
|
||||
var url = 'wss://'+location.hostname+(location.port ? ':'+location.port: '') + "/ws";
|
||||
|
||||
if(typeof session !== 'undefined')
|
||||
url += "/" + session;
|
||||
|
||||
if(typeof task !== 'undefined')
|
||||
url += "/" + task;
|
||||
|
||||
console.log(url);
|
||||
|
||||
var conn = new WebSocket(url);
|
||||
|
||||
var callbacks = {};
|
||||
|
||||
this.bind = function(event_name, callback) {
|
||||
callbacks[event_name] = callbacks[event_name] || [];
|
||||
callbacks[event_name].push(callback);
|
||||
return this;// chainable
|
||||
};
|
||||
|
||||
this.send = function(event_name, event_data) {
|
||||
/*if(conn.readyState !== WebSocket.OPEN) {
|
||||
dispatch("close", null);
|
||||
return;
|
||||
}*/
|
||||
var payload = JSON.stringify({event:event_name, data: event_data});
|
||||
conn.send( payload ); // <= send JSON data to socket server
|
||||
return this;
|
||||
};
|
||||
|
||||
// dispatch to the right handlers
|
||||
conn.onmessage = function(evt) {
|
||||
if(evt.data === "hb::") {
|
||||
console.log('got heartbeat');
|
||||
return;
|
||||
}
|
||||
var json = JSON.parse(evt.data);
|
||||
dispatch(json.event, json.data);
|
||||
};
|
||||
|
||||
function show_errormessage(title, message, event) {
|
||||
var myerrordialog = $("#pfiswebsocket_errordialog");
|
||||
if(myerrordialog.length === 0) {
|
||||
console.log('must append errordialog');
|
||||
$("body").append("<div id='pfiswebsocket_errordialog' class='modal' tabindex='-1' role='dialog'><div class='modal-dialog'><div class='modal-content'><div class='modal-header'><h4 class='modal-title'></h4></div><div class='modal-body'></div><div class='modal-footer'></div></div><!-- /.modal-content --></div><!-- /.modal-dialog --></div><!-- /.modal -->");
|
||||
myerrordialog = $("#pfiswebsocket_errordialog");
|
||||
}
|
||||
|
||||
myerrordialog.find(".modal-title").html(title);
|
||||
myerrordialog.find(".modal-body").html(message);
|
||||
myerrordialog.find('.modal-footer').html("<p class='small'>[code: " + event.code + "; Grund: '" + event.reason + "']</p>");
|
||||
|
||||
$("#pfiswebsocket_errordialog").modal({ backdrop: 'static', keyboard: false });
|
||||
//$("#pfiswebsocket_errordialog").show();
|
||||
|
||||
//$("body").append("<div style='position: absolute; top: 0; bottom: 0; left: 0; right: 0; background-color: lightgrey;'><table width='100%' height='100%'><tr valign='center' style='hight: 100%;'><td align='center'><b>"+message+"</b></td></tr></table></div>");
|
||||
}
|
||||
|
||||
conn.onclose = function(e) {
|
||||
console.log('close:', e);
|
||||
|
||||
if(e.code === 1001) { // going away
|
||||
console.log('WEBSOCKET: going away ...');
|
||||
setTimeout(function() {
|
||||
dispatch('close', {event: e});
|
||||
}, 1000); // we use a timeout here, so that when we simply go to another site, nothing happens!
|
||||
return;
|
||||
}
|
||||
|
||||
if(e.code === 1011 && e.reason === "__no_session__found__") {
|
||||
var url = location.protocol+ '//'+location.hostname+(location.port ? ':'+location.port: '') + "/";
|
||||
console.log(url);
|
||||
show_errormessage("Die Sitzung ist nicht mehr gültig!", "Bitte <a href='"+url+"'>starten Sie eine neue</a>!", e);
|
||||
return;
|
||||
}
|
||||
|
||||
dispatch('close', {event: e});
|
||||
};
|
||||
conn.onopen = function(){ dispatch('open',null)};
|
||||
conn.onerror = function(error) { console.log('error: ', error, error.type); };
|
||||
|
||||
var dispatch = function(event_name, message) {
|
||||
var chain = callbacks[event_name];
|
||||
if(typeof chain == 'undefined') return; // no callbacks for this event
|
||||
for(var i = 0; i < chain.length; i++) {
|
||||
chain[i]( message );
|
||||
}
|
||||
};
|
||||
|
||||
this.bind_standard_close_handler = function() {
|
||||
this.bind("close", function(data) {
|
||||
console.log('CLOSED_HANDLER_CALLED');
|
||||
show_errormessage("Verbindung zu PfIS abgebrochen!", "<a href='javascript: location.reload(true);'>Bitte reload.</a><br>Sollte PfIS ausgefallen sein, versuchen Sie es bitte später noch einmal!", data.event);
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
generateUID = function() {
|
||||
return ("000000" + (Math.random()*Math.pow(36,6) << 0).toString(36)).slice(-6)
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
../../node_modules/jade/runtime.js
|
||||
|
|
@ -0,0 +1 @@
|
|||
../../node_modules/socket.io-client/dist/socket.io.js
|
||||
|
|
@ -0,0 +1 @@
|
|||
../../node_modules/tinymce/
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[Dolphin]
|
||||
Timestamp=2016,9,3,17,48,10
|
||||
Version=3
|
||||
ViewMode=1
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
/*
|
||||
* jquery-easy-loading - v1.2.0
|
||||
* Easily add and manipulate loading states of any element on the page
|
||||
* http://github.com/CarlosBonetti/jquery-loading
|
||||
*
|
||||
* Made by Carlos Bonetti <carlosb_bc@hotmail.com>
|
||||
* Under MIT License
|
||||
*/
|
||||
|
||||
.loading-overlay{display:table;opacity:.7}.loading-overlay-content{text-transform:uppercase;letter-spacing:.4em;font-size:1.15em;font-weight:700;text-align:center;display:table-cell;vertical-align:middle}.loading-overlay.loading-theme-light{background-color:#fff;color:#000}.loading-overlay.loading-theme-dark{background-color:#000;color:#fff}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
.twitter-typeahead {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.twitter-typeahead .tt-query,
|
||||
.twitter-typeahead .tt-hint {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.tt-hint {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 34px; /* 38px;*/
|
||||
padding: 6px 12px; /* 8px 12px; */
|
||||
font-size: 14px;
|
||||
line-height: 1.42857143; /* 1.428571429; */
|
||||
color: #999;
|
||||
vertical-align: middle;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #cccccc;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||
-webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
|
||||
transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
|
||||
}
|
||||
.tt-menu {
|
||||
min-width: 160px;
|
||||
margin-top: 2px;
|
||||
padding: 5px 0;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #cccccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.15);
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||||
background-clip: padding-box;
|
||||
|
||||
}
|
||||
.tt-suggestion {
|
||||
display: block;
|
||||
padding: 3px 20px;
|
||||
}
|
||||
.tt-suggestion:hover {
|
||||
color: #fff;
|
||||
background-color: #428bca;
|
||||
}
|
||||
.tt-suggestion.hover a {
|
||||
color: #fff;
|
||||
}
|
||||
.tt-suggestion p {
|
||||
margin: 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,504 @@
|
|||
html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
padding: 0px;
|
||||
font-family: "Carlito", "Lucida Grande", Helvetica, Arial, sans-serif;
|
||||
/*overflow: hidden;*/
|
||||
}
|
||||
|
||||
.sidewideoverlay {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 768px) {
|
||||
body {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
.display_none_on_small_devices {}
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
.display_none_on_small_devices {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.root {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
/*overflow: auto;*/
|
||||
}
|
||||
|
||||
.subroot {}
|
||||
.new_flex_zero {}
|
||||
.new_flex_one {}
|
||||
.new_flex_two {}
|
||||
/* full_height is for use if a page has a dropdown or auto-complete which would be otherwise not fully visible! */
|
||||
.full_height {}
|
||||
|
||||
@media only screen and (min-width: 768px) {
|
||||
|
||||
.root {
|
||||
display: -ms-flexbox;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
webkit-flex-direction: column;
|
||||
ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-flex-wrap: nowrap;
|
||||
-ms-flex-wrap: nowrap;
|
||||
flex-wrap: nowrap;
|
||||
-webkit-justify-content: flex-start;
|
||||
-ms-flex-pack: start;
|
||||
justify-content: flex-start;
|
||||
-webkit-align-content: flex-start;
|
||||
-ms-flex-line-pack: start;
|
||||
align-content: flex-start;
|
||||
-webkit-align-items: stretch;
|
||||
-ms-flex-align: stretch;
|
||||
align-items: stretch;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.subroot {
|
||||
display: -ms-flexbox;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
webkit-flex-direction: column;
|
||||
ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-flex-wrap: nowrap;
|
||||
-ms-flex-wrap: nowrap;
|
||||
flex-wrap: nowrap;
|
||||
-webkit-justify-content: flex-start;
|
||||
-ms-flex-pack: start;
|
||||
justify-content: flex-start;
|
||||
-webkit-align-content: flex-start;
|
||||
-ms-flex-line-pack: start;
|
||||
align-content: flex-start;
|
||||
-webkit-align-items: stretch;
|
||||
-ms-flex-align: stretch;
|
||||
align-items: stretch;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.full_height { height: 100%; }
|
||||
|
||||
.new_flex_zero {
|
||||
-webkit-order: 0;
|
||||
-ms-flex-order: 0;
|
||||
order: 0;
|
||||
-webkit-flex: 0 0 auto;
|
||||
-ms-flex: 0 0 auto;
|
||||
flex: 0 0 auto;
|
||||
-webkit-align-self: auto;
|
||||
-ms-flex-item-align: auto;
|
||||
align-self: auto;
|
||||
}
|
||||
|
||||
.new_flex_one {
|
||||
-webkit-order: 0;
|
||||
-ms-flex-order: 0;
|
||||
order: 0;
|
||||
-webkit-flex: 5 1 auto;
|
||||
-ms-flex: 5 1 auto;
|
||||
flex: 5 1 auto;
|
||||
-webkit-align-self: auto;
|
||||
-ms-flex-item-align: auto;
|
||||
align-self: auto;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.new_flex_two {
|
||||
-webkit-order: 0;
|
||||
-ms-flex-order: 0;
|
||||
order: 0;
|
||||
-webkit-flex: 2 1 40%;
|
||||
-ms-flex: 2 1 40%;
|
||||
flex: 2 1 40%;
|
||||
-webkit-align-self: auto;
|
||||
-ms-flex-item-align: auto;
|
||||
align-self: auto;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
h1 { margin-top: 10px; }
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
h1 {
|
||||
font-size: 24px;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.buttonbox_back_forward {
|
||||
/*padding-left: 15px; */
|
||||
/*padding-right: 15px; */
|
||||
/*text-align: right;*/
|
||||
padding-left: 15px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.parishdbelemspane {
|
||||
display: -ms-flexbox;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-flex-direction: row;
|
||||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
-webkit-flex-wrap: wrap;
|
||||
-ms-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
-webkit-justify-content: flex-start;
|
||||
-ms-flex-pack: start;
|
||||
justify-content: flex-start;
|
||||
-webkit-align-content: flex-start;
|
||||
-ms-flex-line-pack: start;
|
||||
align-content: flex-start;
|
||||
-webkit-align-items: flex-start;
|
||||
-ms-flex-align: start;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.parishdbelemspane_elem {
|
||||
-webkit-order: 0;
|
||||
-ms-flex-order: 0;
|
||||
order: 0;
|
||||
-webkit-flex: 0 1 auto;
|
||||
-ms-flex: 0 1 auto;
|
||||
flex: 0 1 auto;
|
||||
-webkit-align-self: auto;
|
||||
-ms-flex-item-align: auto;
|
||||
align-self: auto;
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
/* margin-left: 2px;
|
||||
margin-right: 2px;
|
||||
margin-bottom: 5px;*/
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.parishdbelemspane_elem_kontext {
|
||||
font-size: 75%;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.parishdbelemspane_elem_role {
|
||||
font-size: 75%;
|
||||
margin-bottom: 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.container-horizontal {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: -ms-flexbox;
|
||||
display: -webkit-box;
|
||||
display: -moz-box;
|
||||
display: -ms-box;
|
||||
display: box;
|
||||
|
||||
-ms-flex-direction: row;
|
||||
-webkit-box-orient: horizontal;
|
||||
-moz-box-orient: horizontal;
|
||||
-ms-box-orient: horizontal;
|
||||
box-orient: horizontal;
|
||||
}
|
||||
|
||||
.container-vertical {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: -ms-flexbox;
|
||||
display: -webkit-box;
|
||||
display: -moz-box;
|
||||
display: -ms-box;
|
||||
display: box;
|
||||
|
||||
-ms-flex-direction: column;
|
||||
-webkit-box-orient: vertical;
|
||||
-moz-box-orient: vertical;
|
||||
-ms-box-orient: vertical;
|
||||
box-orient: vertical;
|
||||
}
|
||||
|
||||
|
||||
.flex-zero {
|
||||
/* width: 200px;
|
||||
height: 100px;*/
|
||||
/* -ms-flex: 0 100px;*/
|
||||
-webkit-box-flex: 0;
|
||||
-moz-box-flex: 0;
|
||||
-ms-box-flex: 0;
|
||||
box-flex: 0;
|
||||
}
|
||||
|
||||
.flex-one {
|
||||
-ms-flex: 1;
|
||||
-webkit-box-flex: 1;
|
||||
-moz-box-flex: 1;
|
||||
-ms-box-flex: 1;
|
||||
box-flex: 1;
|
||||
overflow: auto;
|
||||
/* height: 100%;*/
|
||||
}
|
||||
|
||||
a {
|
||||
color: #00B7FF;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.a_button {
|
||||
font-size: 15pt;
|
||||
margin: 10px;
|
||||
background-color: #BDDFFF;
|
||||
border-radius: 15px;
|
||||
color: #5893FF;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.litpanel_arrow {
|
||||
font-size: 12pt;
|
||||
/*margin-left: 10px;
|
||||
margin-right: 10px;*/
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.litpanel_red {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.litpanel_black {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.litpanel_bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.litpanel_italic {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.litpanel_month_week_weekday {
|
||||
font-size: 9pt;
|
||||
line-height: 11pt;
|
||||
}
|
||||
|
||||
.litpanel_day {
|
||||
font-size: 26pt;
|
||||
line-height: 28pt;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.litpanel_day_mobile {
|
||||
font-size: 12pt;
|
||||
line-height: 12pt;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
/*margin: 10px;*/
|
||||
}
|
||||
|
||||
.litpanel_day_mobile_littime {
|
||||
font-size: 8pt;
|
||||
line-height: 10pt;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.litpanel_infos {
|
||||
font-size: 9pt;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.litpanel_celebration {
|
||||
font-size: 10pt;
|
||||
line-height: 11pt;
|
||||
}
|
||||
|
||||
.litpanel_celebration_parent {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.litpanel_celebration_add
|
||||
{
|
||||
font-size: 8pt;
|
||||
line-height: 10pt;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
/* INDEX T_ODO */
|
||||
|
||||
.todo {
|
||||
background-color: #BDDFFF;
|
||||
padding: 8px;
|
||||
border-radius: 15px;
|
||||
color: #5893FF;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.daymanager_todo_headline {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.daymanager_todo_involved {
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* INDEX KEEP_IN_MIND */
|
||||
|
||||
.keep_in_mind {
|
||||
background-color: #DDFFBB;
|
||||
padding: 8px;
|
||||
border-radius: 15px;
|
||||
color: #15D715;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.daymanager_keep_in_mind_headline {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* INDEX AWAY */
|
||||
|
||||
.away {
|
||||
background-color: #FFBBBB;
|
||||
padding: 8px;
|
||||
border-radius: 15px;
|
||||
color: #FF5050;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.daymanager_away_headline {
|
||||
/* color: darkred; */
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* INDEX VEHICHLE_USE */
|
||||
|
||||
.vehicle_use {
|
||||
background-color: #FFF4C1;
|
||||
padding: 8px;
|
||||
border-radius: 15px;
|
||||
color: #FF8A3C;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.daymanager_vehicle_use_involved {
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.daymanager_vehicle_use_headline {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
/* */
|
||||
/*
|
||||
.pastoralunit_mobile {
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
margin: 2pt;
|
||||
}*/
|
||||
|
||||
.arrowup:after {
|
||||
content: "\25BC";
|
||||
}
|
||||
.arrowdown:after {
|
||||
content: "\25B2";
|
||||
}
|
||||
|
||||
.pentry_details { display: none; }
|
||||
|
||||
.pentryedit_headline {
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.pentryedit_subheadline, .pentryedit_subheadline_with_padding {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.pentryedit_subheadline_with_padding {
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
.navbar { margin-bottom: 5px; }
|
||||
.pentryedit_headline, .pentryedit_subheadline { margin-bottom: 2px; font-size: 90%; }
|
||||
.form-horizontal .control-label { padding-top: 7px; margin-bottom: 0; text-align: right; }
|
||||
.form-group { margin-bottom: 8px; }
|
||||
}
|
||||
|
||||
/* http://www.mentful.com/2014/06/22/fixed-search-navbar-with-bootstrap-3-0/ */
|
||||
@media(max-width:767px) {
|
||||
.navbar .navbar-form {
|
||||
width: 185px;
|
||||
padding-left:0;
|
||||
padding-right:0;
|
||||
}
|
||||
}
|
||||
@media(min-width:768px) {
|
||||
.navbar .navbar-form {
|
||||
width: 250px;
|
||||
}
|
||||
}
|
||||
.navbar .navbar-form {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
border: 0;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.pager li > span:hover {
|
||||
text-decoration: none;
|
||||
background-color: #eee;
|
||||
color: #23527c;
|
||||
}
|
||||
|
||||
.pager li > span {
|
||||
color: #00B7FF;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pager .disabled > span:hover {
|
||||
background-color: #fff;
|
||||
color: #777;
|
||||
}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
.eventbox {
|
||||
padding: 8px;
|
||||
border-radius: 15px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.eventbox_punit_name {
|
||||
color: darkblue;
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.eventbox_time {
|
||||
text-align: left;
|
||||
/*width: 65%;*/
|
||||
/*float: left;*/
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
.timelineevent_time {
|
||||
font-size: 65%;
|
||||
}
|
||||
|
||||
.eventbox_visibility, .timelineevent_visibility {
|
||||
text-align: right;
|
||||
/*width: 15%;*/
|
||||
/*float: right;*/
|
||||
font-weight: bold;
|
||||
}
|
||||
.timelineevent_visibility {
|
||||
font-size: 65%;
|
||||
}
|
||||
|
||||
.eventbox_name, .timelineevent_name {
|
||||
font-size: 115%;
|
||||
font-weight: bold;
|
||||
margin-bottom: 1px;
|
||||
margin-top: -3px;
|
||||
}
|
||||
.timelineevent_name {
|
||||
font-size: 85%;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.eventbox_name_secondary, .timelineevent_name_secondary {
|
||||
font-size: 75%;
|
||||
font-weight: bold;
|
||||
}
|
||||
.timelineevent_name_secondary {
|
||||
font-size: 75%;
|
||||
}
|
||||
|
||||
.eventbox_locations, .timelineevent_locations {
|
||||
font-size: 90%;
|
||||
color: darkblue;
|
||||
font-weight: bold;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.timelineevent_locations {
|
||||
font-size: 70%;
|
||||
}
|
||||
|
||||
.eventbox_involved, .timelineevent_involved {
|
||||
font-size: 90%;
|
||||
color: green;
|
||||
font-style: italic;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.timelineevent_involved {
|
||||
font-size: 70%;
|
||||
}
|
||||
|
||||
.eventbox_description {
|
||||
margin-top: 2px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.eventbox_annotations {
|
||||
font-size: 90%;
|
||||
}
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
.week_celebration {
|
||||
font-weight: bold;
|
||||
font-size: 105%;
|
||||
}
|
||||
|
||||
.week_celebration_stage1 {
|
||||
font-size: 110%;
|
||||
}
|
||||
|
||||
.week_celebration_stage2 {
|
||||
font-size: 115%;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.new_day_begins {
|
||||
border-bottom: 1px
|
||||
solid #000;
|
||||
}
|
||||
|
||||
tr.new_day_begins > td {
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.td_last_column {
|
||||
padding-left: 4px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.td_new_celebration {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.td_time {
|
||||
width: 8%;
|
||||
text-align: right;
|
||||
vertical-align: top;
|
||||
padding-right: 4px;
|
||||
}
|
||||
|
||||
.td_locsign {
|
||||
width: 5%;
|
||||
vertical-align: top;
|
||||
padding-right: 4px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.week_time_start, .week_pentrytitle {
|
||||
font-size: 105%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.week_time_start {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.week_time_end {
|
||||
font-size: 90%;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
margin-bottom: 0pt;
|
||||
}
|
||||
|
||||
.week_event_name {
|
||||
font-size: 105%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.week_event_locations {
|
||||
font-size: 10pt;
|
||||
color: darkblue;
|
||||
margin-bottom: 0pt;
|
||||
}
|
||||
|
||||
.week_event_involved {
|
||||
font-size: 10pt;
|
||||
color: green;
|
||||
font-style: italic; margin-bottom: 0pt;
|
||||
}
|
||||
|
||||
.week_subheadline {
|
||||
color: black;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.week_additional_info {
|
||||
font-size: 9pt;
|
||||
margin-bottom: 0px;
|
||||
color: black;
|
||||
}
|
||||
|
||||
tr.tr_new_pcalentry > td, tr.tr_new_pcalentry_without_bottomline > td {
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
|
||||
tr.tr_new_pcalentry > td, tr.tr_thereafter_with_bottomline {
|
||||
border-bottom: 1px solid lightgrey;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 768px) {
|
||||
.week_celebration {
|
||||
font-weight: bold;
|
||||
font-size: 115%;
|
||||
}
|
||||
|
||||
.week_celebration_stage1 {
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
.week_celebration_stage2 {
|
||||
font-size: 125%;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.td_new_celebration {
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.week_time_start, .week_pentrytitle {
|
||||
font-size: 115%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.week_event_name {
|
||||
font-size: 115%;
|
||||
}
|
||||
|
||||
tr.tr_new_pcalentry > td {
|
||||
padding-top: 7px;
|
||||
padding-bottom: 7px;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
.twitter-typeahead .tt-query,
|
||||
.twitter-typeahead .tt-hint {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.tt-dropdown-menu {
|
||||
min-width: 160px;
|
||||
margin-top: 2px;
|
||||
padding: 5px 0;
|
||||
background-color: #fff;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0,0,0,.2);
|
||||
*border-right-width: 2px;
|
||||
*border-bottom-width: 2px;
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
border-radius: 6px;
|
||||
-webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
|
||||
-moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
|
||||
box-shadow: 0 5px 10px rgba(0,0,0,.2);
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
.tt-suggestion {
|
||||
display: block;
|
||||
padding: 3px 20px;
|
||||
}
|
||||
|
||||
.tt-suggestion.tt-is-under-cursor {
|
||||
color: #fff;
|
||||
background-color: #0081c2;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0077b3);
|
||||
background-image: linear-gradient(to bottom, #0088cc, #0077b3);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)
|
||||
}
|
||||
|
||||
.tt-suggestion.tt-is-under-cursor a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tt-suggestion p {
|
||||
margin: 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
span.twitter-typeahead {
|
||||
width: 100%;
|
||||
}
|
||||
.input-group span.twitter-typeahead {
|
||||
display: block !important;
|
||||
}
|
||||
.input-group span.twitter-typeahead .tt-dropdown-menu {
|
||||
top: 32px !important;
|
||||
}
|
||||
.input-group.input-group-lg span.twitter-typeahead .tt-dropdown-menu {
|
||||
top: 44px !important;
|
||||
}
|
||||
.input-group.input-group-sm span.twitter-typeahead .tt-dropdown-menu {
|
||||
top: 28px !important;
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
<p>Sehr geehrte Damen und Herren,<br>bitte veröffentlichen Sie unten stehende Termine in der nächsten Wochenend-Ausgabe Ihrer Zeitung.<br>Vielen Dank und freundliche Grüße,<br>Sylvia Helbig-Rößner, Pfarrsekretärin</p>
|
||||
<h1>Rödental St. Hedwig</h1><table width='650px'><tr><td width='18%' valign='top' style='white-space: nowrap;'>Sa, 13. Feb.</td><td width='15%' align='right' valign='top' style='white-space: nowrap;'>16:15 Uhr </td><td>Wort-Gottes-Feier im AWO-Seniorenwohnheim</td></tr><tr><td></td><td></td><td></td></tr><tr><td valign='top' style='white-space: nowrap;'>So, 14. Feb.</td><td width='15%' align='right' valign='top' style='white-space: nowrap;'>10:45 Uhr </td><td>Eucharistiefeier </td></tr><tr><td></td><td></td><td></td></tr><tr><td valign='top' style='white-space: nowrap;'>Do, 18. Feb.</td><td width='15%' align='right' valign='top' style='white-space: nowrap;'>9:00 Uhr </td><td>Eucharistiefeier </td></tr><tr><td></td><td></td><td></td></tr><tr><td valign='top' style='white-space: nowrap;'>So, 21. Feb.</td><td width='15%' align='right' valign='top' style='white-space: nowrap;'>10:45 Uhr </td><td>Eucharistiefeier mit Überreichung des Kreuzzeichens an die Erstkommunionkinder </td></tr><tr><td></td><td></td><td></td></tr><tr><td valign='top' style='white-space: nowrap;'>Do, 25. Feb.</td><td width='15%' align='right' valign='top' style='white-space: nowrap;'>9:00 Uhr </td><td>Eucharistiefeier </td></tr><tr><td></td><td></td><td></td></tr></table><h1>Dörfles-Esbach Christkönig</h1><table width='650px'><tr><td width='18%' valign='top' style='white-space: nowrap;'>Sa, 13. Feb.</td><td width='15%' align='right' valign='top' style='white-space: nowrap;'>17:30 Uhr </td><td>Beichtgelegenheit </td></tr><tr><td width='18%' valign='top' style='white-space: nowrap;'></td><td width='15%' align='right' valign='top' style='white-space: nowrap;'>18:00 Uhr </td><td>Eucharistiefeier </td></tr><tr><td></td><td></td><td></td></tr><tr><td valign='top' style='white-space: nowrap;'>So, 21. Feb.</td><td width='15%' align='right' valign='top' style='white-space: nowrap;'>9:00 Uhr </td><td>Eucharistiefeier </td></tr><tr><td></td><td></td><td></td></tr><tr><td valign='top' style='white-space: nowrap;'>Di, 23. Feb.</td><td width='15%' align='right' valign='top' style='white-space: nowrap;'>9:00 Uhr </td><td>Eucharistiefeier </td></tr><tr><td></td><td></td><td></td></tr></table>
|
||||
|
|
@ -0,0 +1 @@
|
|||
<html><body>ERROR CONNECTING TO PFISJSONSRV</body></html>
|
||||
|
|
@ -0,0 +1 @@
|
|||
<html><body>ERROR CONNECTING TO PFISJSONSRV</body></html>
|
||||
|
|
@ -0,0 +1 @@
|
|||
<html><body>ERROR CONNECTING TO PFISJSONSRV</body></html>
|
||||
|
|
@ -0,0 +1,185 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
var jsonsrv = require('../lib/jsonsrv');
|
||||
var pcalutils = require('../lib/pcalutils');
|
||||
|
||||
function away_from_session(req)
|
||||
{
|
||||
console.log(req.params);
|
||||
console.log(req.session.cache.days);
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
if(typeof req.session.cache.days[req.params.day] === 'undefined')
|
||||
{
|
||||
console.log("-> day undefined");
|
||||
return null;
|
||||
}
|
||||
if(typeof req.session.cache.days[req.params.day].away[req.params.away] === 'undefined')
|
||||
{
|
||||
console.log("-> away undefined");
|
||||
return null;
|
||||
}
|
||||
return req.session.cache.days[req.params.day].away[req.params.away];
|
||||
}
|
||||
|
||||
function away_from_session_is_invalid(req, res, aw)
|
||||
{
|
||||
if(aw === null)
|
||||
{
|
||||
console.log('AWAY UNDEFINED!');
|
||||
console.log(req.params);
|
||||
res.redirect('/day');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
router.get('/:day/:away/cancel', function(req, res, next) {
|
||||
delete req.session.cache.days[req.params.day].away[req.params.away];
|
||||
|
||||
pcalutils.redirect_after_editing(req, res);
|
||||
});
|
||||
|
||||
router.post('/:day/:away/commit', function(req, res, next) {
|
||||
|
||||
console.log(req.body);
|
||||
|
||||
var away = away_from_session(req);
|
||||
if(away_from_session_is_invalid(req, res, away))
|
||||
return;
|
||||
|
||||
away.name = req.body.edit_name;
|
||||
away.involveddb_id = req.body.involveddb_id;
|
||||
away.reason = req.body.edit_reason;
|
||||
|
||||
console.log(away);
|
||||
|
||||
var data = {
|
||||
"request" : "commit_away",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"away" : req.params.away,
|
||||
"away_data" : away
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
delete req.session.cache.days[req.params.day].away[req.params.away];
|
||||
|
||||
pcalutils.redirect_after_editing(req, res);
|
||||
}
|
||||
else {
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
}
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
generateUID = function() {
|
||||
return ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4)
|
||||
}
|
||||
|
||||
function render_away_edit(req, res) {
|
||||
var the_away = req.session.cache.days[req.params.day].away[req.params.away];
|
||||
|
||||
res.render("event_edit_container", { date: req.session.cache.days[req.params.day].date,
|
||||
pentrytype: "away",
|
||||
pentrytype_pretty: "Abwesenheit",
|
||||
pentry: the_away,
|
||||
pentry_href : "/away/" + req.params.day + "/" + req.params.away,
|
||||
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
||||
edit_type: (the_away.uuid.substr(0,4) === "new_" ? "erstellen" : "bearbeiten") });
|
||||
|
||||
console.log('render_away_edit');
|
||||
}
|
||||
|
||||
router.get('/:day/:away/edit', function(req, res, next) {
|
||||
if(typeof req.session.cache.days[req.params.day] !== 'undefined') {
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
if(typeof req.session.cache.days[req.params.day].away[req.params.away] !== 'undefined') {
|
||||
render_away_edit(req, res);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
var day = {
|
||||
events: {},
|
||||
away : {},
|
||||
keep_in_mind : {},
|
||||
todo : {},
|
||||
vehicle_use : {}
|
||||
};
|
||||
|
||||
req.session.cache.days[req.params.day] = day;
|
||||
|
||||
console.log(req.session.cache.days);
|
||||
|
||||
console.log("created new day:");
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
}
|
||||
|
||||
if(req.params.away === "new") {
|
||||
var data = {
|
||||
"request" : "get_parishday",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
req.session.cache.days[req.params.day].date = result.day.date;
|
||||
req.session.date = result.day.date;
|
||||
|
||||
var uuid = "new_" + generateUID();
|
||||
var new_away = pcalutils.create_empty_away(uuid);
|
||||
req.session.cache.days[req.params.day].away[uuid] = new_away;
|
||||
|
||||
var pcalview = "";
|
||||
if(req.query.pcalview)
|
||||
pcalview = '?pcalview='+req.query.pcalview;
|
||||
|
||||
res.redirect('/away/'+req.params.day+'/'+uuid+'/edit'+pcalview);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
var data =
|
||||
{
|
||||
"request" : "away_details",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"away" : req.params.away,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
req.session.date = result.date;
|
||||
req.session.cache.days[req.params.day].date = result.date;
|
||||
|
||||
req.session.cache.days[req.params.day].away[req.params.away] = result.away;
|
||||
|
||||
render_away_edit(req, res);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
|
@ -0,0 +1,635 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
var jsonsrv = require('../lib/jsonsrv');
|
||||
var eventutils = require('../lib/eventutils');
|
||||
|
||||
router.get('/:day/:event', function(req, res, next) {
|
||||
var data =
|
||||
{
|
||||
"request" : "event_details",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"event" : req.params.event,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
res.render("event_details", { date: result.date.date, event: result.event });
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
function event_from_session(req)
|
||||
{
|
||||
if(typeof req.session.cache.days[req.params.day] === 'undefined')
|
||||
{
|
||||
console.log("-> day undefined");
|
||||
return null;
|
||||
}
|
||||
if(typeof req.session.cache.days[req.params.day].events[req.params.event] === 'undefined')
|
||||
{
|
||||
console.log("-> event undefined");
|
||||
return null;
|
||||
}
|
||||
return req.session.cache.days[req.params.day].events[req.params.event];
|
||||
}
|
||||
|
||||
function event_from_session_is_invalid(req, res, ev)
|
||||
{
|
||||
if(ev === null)
|
||||
{
|
||||
console.log('EVENT UNDEFINED!');
|
||||
console.log(req.params);
|
||||
res.redirect('/day');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*function delete_event_if_nothing_is_edited(day, event)
|
||||
{
|
||||
if(event.in_editing)
|
||||
return;
|
||||
|
||||
var can_delete = true;
|
||||
for(idx in event.thereafter)
|
||||
{
|
||||
if(event.thereafter[idx].in_editing === true)
|
||||
{
|
||||
can_delete = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(can_delete)
|
||||
{
|
||||
var found = false;
|
||||
var idx;
|
||||
for(idx in day.events)
|
||||
{
|
||||
console.log("DELETE_IDX", idx);
|
||||
if(day.events[idx].uuid === event.uuid)
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(found)
|
||||
{
|
||||
console.log("DELETING EVENT: ", event.uuid);
|
||||
delete day.events[event.uuid];
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
function end_event_editing(day, event) {
|
||||
event.in_editing = false;
|
||||
|
||||
eventutils.delete_event_if_nothing_is_edited(day, event);
|
||||
}
|
||||
|
||||
router.get('/:day/:event/cancel', function(req, res, next) {
|
||||
end_event_editing( req.session.cache.days[req.params.day],
|
||||
req.session.cache.days[req.params.day].events[req.params.event]);
|
||||
|
||||
console.log('NOW REDIRECT');
|
||||
|
||||
switch(req.query.pcalview) {
|
||||
case 'timeline': {
|
||||
if(req.params.event.substring(0, 4) === "new_")
|
||||
res.redirect("/timeline/" + req.params.day);
|
||||
else
|
||||
res.redirect('/timeline/' + req.params.day + '/' + req.params.event);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
if(req.params.event.substring(0, 4) === "new_")
|
||||
res.redirect("/day/" + req.params.day + "?back=false");
|
||||
else
|
||||
res.redirect('/day/' + req.params.day + '/' +req.params.event);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
router.post('/:day/:event/commit', function(req, res, next) {
|
||||
|
||||
var event = event_from_session(req);
|
||||
console.log("EVENT_form_session: ", event, "\n___");
|
||||
if(event_from_session_is_invalid(req, res, event))
|
||||
return;
|
||||
|
||||
//event.punit = { name : req.body.punit_name, dn : req.body.punit_dn };
|
||||
event.name = req.body.edit_name;
|
||||
event.name_secondary = req.body.edit_name_secondary;
|
||||
event.visibility = req.body.combo_type;
|
||||
event.start = req.body.edit_begin;
|
||||
event.end = req.body.edit_end;
|
||||
if(event.end !== "")
|
||||
event.end_is_vague = (req.body.check_end_is_vague === "on" ? true : false);
|
||||
event.description = req.body.area_description;
|
||||
event.annotations = req.body.area_annotations;
|
||||
|
||||
console.log(event);
|
||||
|
||||
var data = {
|
||||
"request" : "commit_event",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"event" : req.params.event,
|
||||
"event_data" : event
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
end_event_editing(req.session.cache.days[req.params.day], event);
|
||||
|
||||
switch(req.body.pcalview) {
|
||||
case 'pfarreientimeline' : {
|
||||
if(req.params.event.substr(0,4) === "new_")
|
||||
res.redirect("/pfarreientimeline/" + req.params.day + "?scrollto=" + request.uuid);
|
||||
else
|
||||
res.redirect('/pfarreientimeline/' + req.params.day + '/' + req.params.event);
|
||||
}
|
||||
case 'pastoralteam' : {
|
||||
if(req.params.event.substr(0,4) === "new_")
|
||||
res.redirect("/pastoralteam/" + req.params.day + "?scrollto=" + request.uuid);
|
||||
else
|
||||
res.redirect('/pastoralteam/' + req.params.day + '/' + req.params.event);
|
||||
}
|
||||
case 'timeline': {
|
||||
if(req.params.event.substr(0,4) === "new_")
|
||||
res.redirect("/timeline/" + req.params.day + "?scrollto=" + request.uuid);
|
||||
else
|
||||
res.redirect('/timeline/' + req.params.day + '/' + req.params.event);
|
||||
}
|
||||
default : {
|
||||
if(req.params.event.substr(0,4) === "new_")
|
||||
res.redirect("/day/" + req.params.day + "?back=false");
|
||||
else
|
||||
res.redirect('/day/' + req.params.day + '/' + req.params.event);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
}
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
generateUID = function() {
|
||||
return ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4)
|
||||
}
|
||||
|
||||
function render_event_edit(req, res) {
|
||||
var event_href = "/event/" + req.params.day + "/" + req.params.event;
|
||||
|
||||
var the_event = req.session.cache.days[req.params.day].events[req.params.event];
|
||||
|
||||
res.render("event_edit_container", { date: req.session.cache.days[req.params.day].date,
|
||||
pentrytype: "event",
|
||||
pentrytype_pretty: "Ereignis",
|
||||
pentry: the_event,
|
||||
pentry_href : event_href,
|
||||
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
||||
edit_type: (the_event.uuid.substr(0,4) === "new_" ? "erstellen" : "bearbeiten") });
|
||||
|
||||
console.log('render_event_edit');
|
||||
}
|
||||
|
||||
router.get('/:day/:event/edit', function(req, res, next) {
|
||||
if(typeof req.session.cache.days[req.params.day] !== 'undefined') {
|
||||
if(typeof req.session.cache.days[req.params.day].events[req.params.event] !== 'undefined') {
|
||||
if(req.session.cache.days[req.params.day].events[req.params.event].in_editing === true) {
|
||||
render_event_edit(req, res);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
var day = {
|
||||
events: {},
|
||||
away : {},
|
||||
keep_in_mind : {},
|
||||
todo : {},
|
||||
vehicle_use : {}
|
||||
};
|
||||
|
||||
req.session.cache.days[req.params.day] = day;
|
||||
|
||||
console.log(req.session.cache.days);
|
||||
|
||||
console.log("created new day:");
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
}
|
||||
|
||||
if(req.params.event === "new") {
|
||||
var data = {
|
||||
"request" : "get_parishday",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
req.session.cache.days[req.params.day].date = result.day.date;
|
||||
req.session.date = result.day.date;
|
||||
|
||||
var uuid = "new_" + generateUID();
|
||||
var new_event = eventutils.create_empty_event();
|
||||
new_event.uuid = uuid;
|
||||
new_event.in_editing = true;
|
||||
new_event.thereafter = {};
|
||||
req.session.cache.days[req.params.day].events[uuid] = new_event;
|
||||
|
||||
//render_event_edit(req, res );
|
||||
var pcalview = "";
|
||||
if(req.query.pcalview)
|
||||
pcalview = '?pcalview='+req.query.pcalview;
|
||||
res.redirect('/event/'+req.params.day+'/'+uuid+'/edit' + pcalview);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
var data =
|
||||
{
|
||||
"request" : "event_details",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"event" : req.params.event,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
req.session.date = result.date;
|
||||
req.session.cache.days[req.params.day].date = result.date;
|
||||
|
||||
// the event-object might exist, if there is a thereafter of it editet in the same session (other window)
|
||||
// so we create it only, if it does not exist, so that thereafters in editing are not deleted!
|
||||
if(! req.session.cache.days[req.params.day].events[req.params.event] ) {
|
||||
console.log("creating new event-object for ", req.params.day, "/", req.params.event);
|
||||
req.session.cache.days[req.params.day].events[req.params.event] = { thereafter: {} };
|
||||
}
|
||||
else
|
||||
console.log("using existing (from thereafter!) event-object for ", req.params.day, "/", req.params.event);
|
||||
|
||||
eventutils.copy_event_without_thereafter(req.session.cache.days[req.params.day].events[req.params.event], result.event)
|
||||
req.session.cache.days[req.params.day].events[req.params.event].in_editing = true;
|
||||
|
||||
console.log("NOW ADDING UIDs");
|
||||
eventutils.add_uids_to_event(req.session.cache.days[req.params.day].events[req.params.event]);
|
||||
/* NOT NECCESSARY: WE DO NOT SAVE THEREAFTERS WHICH WE GOT IN THIS event_details-call!
|
||||
// they are loaded, when we edit them (see tevents.js!)
|
||||
thereafter = req.session.cache.days[req.params.day].events[req.params.event].thereafter;
|
||||
for(idx in thereafter)
|
||||
{
|
||||
add_uids_to_event(thereafter[idx]);
|
||||
thereafter[idx].in_editing = false;
|
||||
}*/
|
||||
console.log("END ADDING UIDs");
|
||||
|
||||
render_event_edit(req, res);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/*router.get('/:day/:event/clone', function(req, res, next) {
|
||||
var data =
|
||||
{
|
||||
"request" : "event_details",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"event" : req.params.event,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv(req, res, data,
|
||||
function(req, res, result) {
|
||||
if(result.result === "OK")
|
||||
res.render("pentrymove", { pentrytype: "event",
|
||||
date : result.date.date,
|
||||
uuid : result.event.uuid,
|
||||
clone_or_move: "clone",
|
||||
clone_or_move_pretty_verb: "geklont",
|
||||
clone_or_move_pretty_noun: "Klonen",
|
||||
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
||||
pentryname: "das Ereignis \"" + result.event.name +"\"",
|
||||
});
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/:day/:event/move', function(req, res, next) {
|
||||
var data =
|
||||
{
|
||||
"request" : "event_details",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"event" : req.params.event,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
res.render("pentrymove", { pentrytype: "event",
|
||||
date : result.date.date,
|
||||
uuid : result.event.uuid,
|
||||
clone_or_move: "move",
|
||||
clone_or_move_pretty_verb: "verschoben",
|
||||
clone_or_move_pretty_noun: "Verschieben",
|
||||
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
||||
pentryname: "das Ereignis \"" + result.event.name +"\"",
|
||||
});
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});*/
|
||||
|
||||
router.post('/:day/:event/delete', function(req, res, next) {
|
||||
console.log(req.body);
|
||||
|
||||
var data = {
|
||||
"request" : "delete_event",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"event" : req.params.event,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv(req, res, data,
|
||||
function(req, res, result) {
|
||||
if(result.result === "OK")
|
||||
res.redirect("/day/" + req.params.day + "?back=false");
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
/*
|
||||
|
||||
router.get('/:day/:event/select_pastoralunit', function(req, res, next) {
|
||||
var data =
|
||||
{
|
||||
"request" : "get_all_pastoralunits",
|
||||
"sessionuuid" : req.session.sessionuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
var event = event_from_session(req);
|
||||
|
||||
res.render("pastoralunitselector", {
|
||||
actual_punit_dn : event.punit.dn,
|
||||
actual_punit_name: event.punit.name,
|
||||
pentry_edit_base: '/event/' + req.params.day + '/' + req.params.event,
|
||||
pastoralunits: result.pastoralunits
|
||||
});
|
||||
}
|
||||
else
|
||||
res.redirect("/login");
|
||||
},
|
||||
redirect_to_login);
|
||||
});
|
||||
|
||||
router.post('/:day/:event/pastoralunit_selected', function(req, res, next) {
|
||||
var event = event_from_session(req);
|
||||
event.punit.dn = req.body.actual_punit_dn;
|
||||
event.punit.name = req.body.actual_punit_name;
|
||||
|
||||
console.log(event);
|
||||
|
||||
res.redirect('/event/' + req.params.day + '/' + req.params.event + "/edit");
|
||||
});
|
||||
|
||||
router.get('/:day/:event/add_predefined_location', function(req, res, next) {
|
||||
var data =
|
||||
{
|
||||
"request" : "get_all_predefined_locations",
|
||||
"sessionuuid": req.session.sessionuuid,
|
||||
"omitt" : []
|
||||
};
|
||||
|
||||
for(idx in req.session.event.locations)
|
||||
{
|
||||
var loc = req.session.event.locations[idx];
|
||||
if(loc.id != "other")
|
||||
data.omitt.push(loc.id);
|
||||
}
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
res.render("locationselector", {
|
||||
pentry_edit_base: '/event/' + req.params.day + '/' + req.params.event,
|
||||
units: result.locations
|
||||
});
|
||||
}
|
||||
else
|
||||
res.redirect('/login');
|
||||
},
|
||||
function(error) {
|
||||
res.redirect('/login');
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/:day/:event/add_predefined_location', function(req, res, next) {
|
||||
|
||||
var loc =
|
||||
{
|
||||
uid : generateUID(),
|
||||
name : req.body.actual_location_name,
|
||||
sign : req.body.actual_location_sign,
|
||||
id : req.body.actual_location_id
|
||||
};
|
||||
|
||||
var event = event_from_session(req);
|
||||
|
||||
event.locations.push(loc);
|
||||
|
||||
console.log(event.locations);
|
||||
|
||||
res.redirect('/event/' + req.params.day + '/' + req.params.event + "/edit#locations");
|
||||
});
|
||||
|
||||
router.get('/:day/:event/add_actor', function(req, res, next) {
|
||||
var data =
|
||||
{
|
||||
"request" : "get_all_actors",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"omitt" : []
|
||||
};
|
||||
|
||||
var role = '';
|
||||
|
||||
if(typeof req.query.role !== 'undefined')
|
||||
{
|
||||
role = req.query.role;
|
||||
console.log('ADD ACTOR FOR ROLE '+req.query.role);
|
||||
}
|
||||
|
||||
var event = event_from_session(req);
|
||||
var the_involved = get_involved_from_event(event, role);
|
||||
|
||||
for(a in the_involved)
|
||||
{
|
||||
var actor = the_involved[a];
|
||||
if(actor.id !== "other" && actor.id !== "dn")
|
||||
data.omitt.push(actor.id);
|
||||
}
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
res.render("actorselector", {
|
||||
pentry_edit_base: '/event/' + req.params.day + '/' + req.params.event,
|
||||
units: result.actors,
|
||||
for_role: role
|
||||
});
|
||||
}
|
||||
else
|
||||
res.redirect("/login");
|
||||
},
|
||||
redirect_to_login);
|
||||
});
|
||||
|
||||
router.post('/:day/:event/add_actor', function(req, res, next) {
|
||||
|
||||
var actor =
|
||||
{
|
||||
uid : generateUID(),
|
||||
name : req.body.actual_actor_name,
|
||||
id : req.body.actual_actor_id
|
||||
};
|
||||
|
||||
var event = event_from_session(req);
|
||||
var the_involved = get_involved_from_event(event, req.body.for_role);
|
||||
|
||||
the_involved.push(actor);
|
||||
|
||||
console.log(the_involved);
|
||||
|
||||
res.redirect('/event/' + req.params.day + '/' + req.params.event + "/edit");
|
||||
});
|
||||
|
||||
function do_add_edit_role(req, res, next, pentry_edit_base, submit_dest, role_uid)
|
||||
{
|
||||
var data =
|
||||
{
|
||||
"request" : "get_predefined_roles",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
var event = event_from_session(req);
|
||||
var role_name = '';
|
||||
if(submit_dest == 'edit_role')
|
||||
{
|
||||
role_name = get_role_from_uid(event, role_uid).name;
|
||||
}
|
||||
|
||||
var already_defined_roles = [];
|
||||
for( idx in event.involved_roles )
|
||||
{
|
||||
if(event.involved_roles[idx].name !== role_name)
|
||||
already_defined_roles.push(event.involved_roles[idx].name);
|
||||
}
|
||||
|
||||
res.render("roleeditor", {
|
||||
pentry_edit_base: pentry_edit_base,
|
||||
roles : result.roles,
|
||||
submit_dest : submit_dest,
|
||||
role_name : role_name,
|
||||
role_uid : role_uid,
|
||||
already_defined_roles : already_defined_roles
|
||||
});
|
||||
}
|
||||
else
|
||||
res.redirect("/login");
|
||||
},
|
||||
redirect_to_login);
|
||||
}
|
||||
|
||||
router.get('/:day/:event/add_role', function(req, res, next) {
|
||||
do_add_edit_role(req, res, next, '/event/' + req.params.day + '/' + req.params.event, 'add_role', '')
|
||||
});
|
||||
|
||||
router.get('/:day/:event/edit_role/:role', function(req, res, next) {
|
||||
do_add_edit_role(req, res, next, '/event/' + req.params.day + '/' + req.params.event, 'edit_role', req.params.role)
|
||||
});
|
||||
|
||||
router.post('/event/:day/:event/add_role', function(req, res, next) {
|
||||
var role =
|
||||
{
|
||||
uid : generateUID(),
|
||||
name : req.body.role_name,
|
||||
involved : []
|
||||
};
|
||||
|
||||
var event = event_from_session(req);
|
||||
|
||||
event.involved_roles.push(role);
|
||||
|
||||
console.log(event);
|
||||
|
||||
res.redirect('/event/' + req.params.day + '/' + req.params.event + "/edit");
|
||||
});
|
||||
|
||||
router.post('/:day/:event/edit_role', function(req, res, next) {
|
||||
console.log(req.body);
|
||||
|
||||
var event = event_from_session(req);
|
||||
get_role_from_uid(event, req.body.role_uid).name = req.body.role_name;
|
||||
|
||||
console.log(event);
|
||||
|
||||
res.redirect('/event/' + req.params.day + '/' + req.params.event + "/edit");
|
||||
});
|
||||
|
||||
|
||||
*/
|
||||
|
|
@ -0,0 +1,901 @@
|
|||
var express = require('express');
|
||||
/*var session = require('express-session');*/
|
||||
var net = require('net');
|
||||
var crypto = require('crypto');
|
||||
|
||||
var jade = require('jade');
|
||||
|
||||
var router = express.Router();
|
||||
|
||||
var jsonsrv = require('../lib/jsonsrv');
|
||||
var pcalutils = require('../lib/pcalutils');
|
||||
|
||||
router.get('/:pcalview/picker', function(req, res, next) {
|
||||
var d = new Date(Date.now());
|
||||
var messages = [];
|
||||
if(req.query.start)
|
||||
{
|
||||
var matches = /^(\d{4})-(\d{2})-(\d{2})$/.exec(req.query.start);
|
||||
if(matches)
|
||||
{
|
||||
var start = Date.parse(req.query.start);
|
||||
if( ! isNaN(start))
|
||||
d = new Date(start);
|
||||
else
|
||||
messages.push({type: "danger", title: "Eingabefehler:", message: "Das von Ihnen angegeben Startdatum ('" + req.query.start + "') konnte nicht interpretiert werden! Es wird auf 'heute' ausgewichen." });
|
||||
}
|
||||
else
|
||||
messages.push({type: "danger", title: "Eingabefehler:", message: "Das von Ihnen angegeben Startdatum ('" + req.query.start + "') entspricht nicht dem Format 'yyyy-mm-dd'! Es wird auf 'heute' ausgewichen." });
|
||||
}
|
||||
|
||||
res.render("datepicker", { date: d.toISOString().slice(0, 10), pcalview: req.params.pcalview, messages: messages });
|
||||
});
|
||||
|
||||
router.get("/:pcalview/:date/select_punits_for_view", function(req, res, next) {
|
||||
var data =
|
||||
{
|
||||
"request" : "get_pastoralunits_for_viewselection",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK" )
|
||||
{
|
||||
res.render('select_punits_for_view', { u : req.params.pcalview, d : req.params.date, pastoralunits : result.pastoralunits, exclude_from_view : result.exclude_from_view } );
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
/*
|
||||
do_day = function(req, res, next, date) {
|
||||
var data = {
|
||||
"request" : "get_parishday",
|
||||
"format" : "day",
|
||||
"date" : date,
|
||||
"sessionuuid" : req.session.sessionuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK" || result.result === "OK_invalid_date") {
|
||||
var params = pcalutils.do_day_renderparams_from_result(result, req.session);
|
||||
|
||||
var can_go_back = true;
|
||||
if(req.query.back) {
|
||||
if(req.query.back == "false")
|
||||
params.can_go_back = false;
|
||||
else
|
||||
params.can_go_back = true;
|
||||
}
|
||||
res.render('index', params);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
*/
|
||||
do_timeline = function(req, res, next, date, viewformat, event) {
|
||||
var data = {
|
||||
"request" : "get_parishday",
|
||||
"format" : viewformat,
|
||||
"date" : date,
|
||||
"sessionuuid" : req.session.sessionuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK" || result.result === "OK_invalid_date") {
|
||||
var params = pcalutils.do_day_renderparams_from_result(result, req.session);
|
||||
params.event = event;
|
||||
params.viewformat = viewformat;
|
||||
if(req.query.scrollto)
|
||||
params.scrollto = req.query.scrollto;
|
||||
else
|
||||
params.scrollto = "";
|
||||
|
||||
var can_go_back = true;
|
||||
if(req.query.back) {
|
||||
if(req.query.back == "false")
|
||||
params.can_go_back = false;
|
||||
else
|
||||
params.can_go_back = true;
|
||||
}
|
||||
res.render('day', params);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
|
||||
do_week = function(req, res, next, date) {
|
||||
var data = {
|
||||
"request" : "get_parishweek",
|
||||
"date" : date,
|
||||
"sessionuuid" : req.session.sessionuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK" || result.result === "OK_invalid_date") {
|
||||
var params = pcalutils.do_week_renderparams_from_result(result, req.session);
|
||||
|
||||
var can_go_back = true;
|
||||
if(req.query.back) {
|
||||
if(req.query.back == "false")
|
||||
params.can_go_back = false;
|
||||
else
|
||||
params.can_go_back = true;
|
||||
}
|
||||
res.render('week', params);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
|
||||
/*router.get('/', function(req, res, next) {
|
||||
do_day(req, res, next, (new Date(Date.now())).toISOString().slice(0,10)); });
|
||||
router.get('/day/', function(req, res, next) {
|
||||
do_day(req, res, next, (new Date(Date.now())).toISOString().slice(0,10)); });
|
||||
router.get('/day/:d', function(req, res, next) {
|
||||
do_day(req, res, next, req.params.d); });*/
|
||||
|
||||
router.get('/', function(req, res, next) {
|
||||
do_timeline(req, res, next, (new Date(Date.now())).toISOString().slice(0,10), "day", ""); });
|
||||
router.get('/day/', function(req, res, next) {
|
||||
do_timeline(req, res, next, (new Date(Date.now())).toISOString().slice(0,10), "day", ""); });
|
||||
router.get('/day/:day', function(req, res, next) {
|
||||
do_timeline(req, res, next, req.params.day, "day", ""); });
|
||||
router.get('/day/:day/:event', function(req, res, next) {
|
||||
do_timeline(req, res, next, req.params.day, "day", req.params.event); });
|
||||
|
||||
router.get('/week/', function(req, res, next) {
|
||||
do_week(req, res, next, (new Date(Date.now())).toISOString().slice(0,10)); });
|
||||
router.get('/week/:d', function(req, res, next) {
|
||||
do_week(req, res, next, req.params.d); });
|
||||
|
||||
router.get('/timeline/', function(req, res, next) {
|
||||
do_timeline(req, res, next, (new Date(Date.now())).toISOString().slice(0,10), "timeline", ""); });
|
||||
router.get('/timeline/:day', function(req, res, next) {
|
||||
do_timeline(req, res, next, req.params.day, "timeline", ""); });
|
||||
router.get('/timeline/:day/:event', function(req, res, next) {
|
||||
do_timeline(req, res, next, req.params.day, "timeline", req.params.event); });
|
||||
|
||||
router.get('/pastoralteam/', function(req, res, next) {
|
||||
do_timeline(req, res, next, (new Date(Date.now())).toISOString().slice(0,10), "pastoralteam", ""); });
|
||||
router.get('/pastoralteam/:day', function(req, res, next) {
|
||||
do_timeline(req, res, next, req.params.day, "pastoralteam", ""); });
|
||||
router.get('/pastoralteam/:day/:event', function(req, res, next) {
|
||||
do_timeline(req, res, next, req.params.day, "pastoralteam", req.params.event); });
|
||||
|
||||
router.get('/pfarreientimeline/', function(req, res, next) {
|
||||
do_timeline(req, res, next, (new Date(Date.now())).toISOString().slice(0,10), "pfarreientimeline", ""); });
|
||||
router.get('/pfarreientimeline/:day', function(req, res, next) {
|
||||
do_timeline(req, res, next, req.params.day, "pfarreientimeline", ""); });
|
||||
router.get('/pfarreientimeline/:day/:event', function(req, res, next) {
|
||||
do_timeline(req, res, next, req.params.day, "pfarreientimeline", req.params.event); });
|
||||
|
||||
|
||||
router.post("/adjust_date", function(req, res, next) {
|
||||
console.log(req.body);
|
||||
|
||||
var data =
|
||||
{
|
||||
"request" : "adjust_date",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"adjust_date" : req.body.adjust_date
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
res.redirect(req.session.pcalview);
|
||||
else
|
||||
res.redirect("/login");
|
||||
},
|
||||
function(error) {
|
||||
res.redirect('/login')
|
||||
});
|
||||
});
|
||||
|
||||
/*function do_clone_move(req, res, next, clone_or_move) {
|
||||
var data = {
|
||||
"request" : req.params.pentrytype + "_details",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.date
|
||||
};
|
||||
data[req.params.pentrytype] = req.params.uuid;
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
var renderdata = { pentrytype : req.params.pentrytype,
|
||||
date : result.date,
|
||||
uuid : req.params.uuid,
|
||||
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
||||
sessionuuid : req.session.sessionuuid
|
||||
};
|
||||
|
||||
switch(clone_or_move) {
|
||||
case "clone":
|
||||
renderdata["clone_or_move"] = "clone";
|
||||
renderdata["clone_or_move_pretty_verb"] = "geklont";
|
||||
renderdata["clone_or_move_pretty_verb2"] = "klonen";
|
||||
renderdata["clone_or_move_pretty_noun"] = "Klonen";
|
||||
break;
|
||||
case "move":
|
||||
renderdata["clone_or_move"] = "move";
|
||||
renderdata["clone_or_move_pretty_verb"] = "verschoben";
|
||||
renderdata["clone_or_move_pretty_verb2"] = "verschieben";
|
||||
renderdata["clone_or_move_pretty_noun"] = "Verschieben";
|
||||
}
|
||||
|
||||
switch(req.params.pentrytype) {
|
||||
case "event":
|
||||
renderdata["pentryname"] = result.event.name;
|
||||
renderdata["pentrytype_pretty"] = "Ereignis";
|
||||
break;
|
||||
case "away":
|
||||
renderdata["pentryname"] = result.away.name;
|
||||
renderdata["pentrytype_pretty"] = "Abwesenheit";
|
||||
break;
|
||||
case "keep_in_mind":
|
||||
renderdata["pentryname"] = result.keep_in_mind.name;
|
||||
renderdata["pentrytype_pretty"] = "Zu-Beachten";
|
||||
break;
|
||||
case "todo":
|
||||
renderdata["pentryname"] = result.todo.name;
|
||||
renderdata["pentrytype_pretty"] = "Zu-Tun";
|
||||
break;
|
||||
case "vehicle_use":
|
||||
renderdata["pentryname"] = result.vehicle_use.name + " (" + result.vehicle_use.pretty.vehicle +")";
|
||||
renderdata["pentrytype_pretty"] = "Fahrzeugbenutzung";
|
||||
break;
|
||||
}
|
||||
res.render("pentrymove", renderdata);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
|
||||
router.get('/pentry/:date/:pentrytype/:uuid/clone', function(req, res, next) {
|
||||
do_clone_move(req, res, next, "clone")});
|
||||
router.get('/pentry/:date/:pentrytype/:uuid/move', function(req, res, next) {
|
||||
do_clone_move(req, res, next, "move")});
|
||||
|
||||
*/
|
||||
/*router.get('/email', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"request" : "get_parishdbelems_flat_email",
|
||||
"sessionuuid" : req.session.sessionuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
|
||||
if(result.result === "OK") {
|
||||
|
||||
for(idx in result.parishdb) {
|
||||
result.parishdb[idx].uid = generateUID();
|
||||
|
||||
if(result.parishdb[idx].type === "group") {
|
||||
for(midx in result.parishdb[idx].members)
|
||||
result.parishdb[idx].members[midx].uid = generateUID();
|
||||
}
|
||||
}
|
||||
res.render('email', { parishdb : result.parishdb });
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});*/
|
||||
|
||||
router.get('/templates/:template.js', function(req, res, next) {
|
||||
res.send(jade.compileFileClient('views/'+req.params.template+".jade", {name: req.params.template+'_template', compileDebug: true}));
|
||||
});
|
||||
|
||||
router.get('/templates/:dir/:template.js', function(req, res, next) {
|
||||
res.send(jade.compileFileClient('views/'+req.params.dir+"/"+req.params.template+".jade", {name: req.params.template+'_template', compileDebug: true}));
|
||||
});
|
||||
|
||||
router.get('/birthdaycards/:taskuuid/download/:file', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"taskuuid" : req.params.taskuuid
|
||||
};
|
||||
|
||||
switch(req.params.file) {
|
||||
case "cards.pdf": jsondata.request = "get_cards"; break;
|
||||
case "envelopes.pdf": jsondata.request = "get_envelopes"; break;
|
||||
default:
|
||||
var err = new Error('Not Found');
|
||||
err.status = 404;
|
||||
res.render('error', {
|
||||
message: err.message,
|
||||
error: err
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
res.setHeader("Content-Type", "application/pdf");
|
||||
res.send(new Buffer(result.data, 'base64'));
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
router.get('/birthdaycards/:taskuuid', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"request" : "get_taskdata",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"taskuuid" : req.params.taskuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
console.log(result);
|
||||
if(result.result === "OK") {
|
||||
res.render('birthdaycards', { sessionuuid: req.session.sessionuuid, taskuuid: req.params.taskuuid, data : result });
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/birthdaycards', function(req, res, next) {
|
||||
var jsondata = {
|
||||
sessionuuid: req.session.sessionuuid,
|
||||
request : "create_task",
|
||||
tasktype: "birthdaycards"
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
res.redirect('/birthdaycards/'+result.taskuuid);
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
//
|
||||
|
||||
router.get('/labelprinter/:taskuuid/download/:file', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"taskuuid" : req.params.taskuuid
|
||||
};
|
||||
|
||||
switch(req.params.file) {
|
||||
case "labels.pdf": jsondata.request = "get_labels"; break;
|
||||
case "postmen.html": jsondata.request = "get_postmen"; break;
|
||||
default:
|
||||
var err = new Error('Not Found');
|
||||
err.status = 404;
|
||||
res.render('error', {
|
||||
message: err.message,
|
||||
error: err
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
if(req.params.file == "labels.pdf")
|
||||
res.setHeader("Content-Type", "application/pdf");
|
||||
else
|
||||
res.setHeader("Content-Type", "text/html");
|
||||
res.send(new Buffer(result.data, 'base64'));
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
router.get('/labelprinter/:taskuuid', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"request" : "get_taskdata",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"taskuuid" : req.params.taskuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
console.log(result);
|
||||
if(result.result === "OK") {
|
||||
res.render('labelprinter', { sessionuuid: req.session.sessionuuid, taskuuid: req.params.taskuuid, data : result });
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/labelprinter', function(req, res, next) {
|
||||
var jsondata = {
|
||||
sessionuuid: req.session.sessionuuid,
|
||||
request : "create_task",
|
||||
tasktype: "labelprinter"
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
res.redirect('/labelprinter/'+result.taskuuid);
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
//
|
||||
|
||||
router.get('/patenurkunde/:taskuuid', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"request" : "get_taskdata",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"taskuuid" : req.params.taskuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
console.log(result);
|
||||
if(result.result === "OK") {
|
||||
console.log(result);
|
||||
res.render('patenurkunde', { sessionuuid: req.session.sessionuuid, taskuuid: req.params.taskuuid, data : result });
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/patenurkunde', function(req, res, next) {
|
||||
var jsondata = {
|
||||
sessionuuid: req.session.sessionuuid,
|
||||
request : "create_task",
|
||||
tasktype: "patenurkunde"
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
res.redirect('/patenurkunde/'+result.taskuuid);
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/patenurkunde/:taskuuid/download/:file', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"taskuuid" : req.params.taskuuid,
|
||||
"request" : "get_file",
|
||||
"filename" : req.params.file
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
if(req.params.file.endsWith(".html"))
|
||||
res.setHeader("Content-Type", "text/html");
|
||||
else
|
||||
res.setHeader("Content-Type", "application/pdf");
|
||||
res.send(new Buffer(result.data, 'base64'));
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
//
|
||||
|
||||
router.get('/email/:taskuuid', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"request" : "get_parishdbelems_flat_email",
|
||||
"sessionuuid" : req.session.sessionuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
|
||||
if(result.result === "OK") {
|
||||
|
||||
for(idx in result.parishdb) {
|
||||
result.parishdb[idx].uid = generateUID();
|
||||
|
||||
if(result.parishdb[idx].type === "group") {
|
||||
for(midx in result.parishdb[idx].members)
|
||||
result.parishdb[idx].members[midx].uid = generateUID();
|
||||
}
|
||||
}
|
||||
res.render('email', { sessionuuid: req.session.sessionuuid, taskuuid: req.params.taskuuid, parishdb : result.parishdb });
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/email', function(req, res, next) {
|
||||
var jsondata = {
|
||||
sessionuuid: req.session.sessionuuid,
|
||||
request : "create_task",
|
||||
tasktype: "email"
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
res.redirect('/email/'+result.taskuuid);
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/volunteerslist/:taskuuid', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"request" : "init_task",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"taskuuid" : req.params.taskuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
|
||||
console.log(result.parishes);
|
||||
|
||||
if(result.result === "OK") {
|
||||
res.render('volunteerslist', { sessionuuid: req.session.sessionuuid, taskuuid: req.params.taskuuid, sortorder: result.sortorder, parishes : result.parishes });
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/volunteerslist', function(req, res, next) {
|
||||
var jsondata = {
|
||||
sessionuuid: req.session.sessionuuid,
|
||||
request : "create_task",
|
||||
tasktype: "volunteerslist"
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
res.redirect('/volunteerslist/'+result.taskuuid);
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/volunteerslist/:taskuuid/download/letters.pdf', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"taskuuid" : req.params.taskuuid,
|
||||
"request" : "get_letters"
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
res.setHeader("Content-Type", "application/pdf");
|
||||
res.send(new Buffer(result.data, 'base64'));
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
//
|
||||
|
||||
router.get('/pcalimport/:taskuuid', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"request" : "init_task",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"taskuuid" : req.params.taskuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
|
||||
console.log(result.parishes);
|
||||
|
||||
if(result.result === "OK") {
|
||||
res.render('pcalimport', { sessionuuid: req.session.sessionuuid, taskuuid: req.params.taskuuid });
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/pcalimport', function(req, res, next) {
|
||||
var jsondata = {
|
||||
sessionuuid: req.session.sessionuuid,
|
||||
request : "create_task",
|
||||
tasktype: "pcalimport"
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
res.redirect('/pcalimport/'+result.taskuuid);
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
//
|
||||
|
||||
/*router.get('/sockettest/:taskuuid', function(req, res, next) {
|
||||
res.render('sockettest', { sessionuuid: req.session.sessionuuid, taskuuid: req.params.taskuuid});
|
||||
});
|
||||
|
||||
router.get('/sockettest', function(req, res, next) {
|
||||
var jsondata = {
|
||||
sessionuuid: req.session.sessionuuid,
|
||||
request : "create_task",
|
||||
tasktype: "email"
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
res.redirect('/sockettest/'+result.taskuuid);
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});*/
|
||||
/*
|
||||
router.post("/pentry/:date/:pentrytype/:uuid/:clone_or_move", function(req, res, next) {
|
||||
console.log(req.body);
|
||||
|
||||
var data = {
|
||||
"request" : "pentry_clone_move",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"type" : req.params.clone_or_move,
|
||||
"date" : req.params.date,
|
||||
"pentrytype": req.params.pentrytype,
|
||||
"uuid" : req.params.uuid,
|
||||
"new_date" : req.body.new_date
|
||||
}
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
req.session.messages = result.messages.concat(req.session.messages);
|
||||
switch(req.body.pcalview) {
|
||||
case 'timeline': {
|
||||
res.redirect('/timeline/' + req.params.date);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
res.redirect("/day/" + req.params.date + "?back=false");
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});*/
|
||||
|
||||
router.get("/parishdb", function(req, res, next) {
|
||||
var jsondata = {
|
||||
sessionuuid: req.session.sessionuuid,
|
||||
request : "get_parishdbelems_tree"
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
console.log(result);
|
||||
|
||||
if(result.result === "OK")
|
||||
res.render("parishdb", { "parishdb": result.parishdb, "sessionuuid" : req.session.sessionuuid });
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.post("/select_punits_for_view", function(req, res, next) {
|
||||
console.log(req.body);
|
||||
|
||||
var data =
|
||||
{
|
||||
"request" : "exclude_pastoralunits_from_view",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"exclude_from_view" : req.body.exclude_from_view.split(',')
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
res.redirect(req.body.u + "/" + req.body.d);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/about', function(req, res) {
|
||||
res.render('about');
|
||||
});
|
||||
|
||||
router.get('/parishcalA4week/:basedate', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"request" : "get_parishcalA4week",
|
||||
"date" : req.params.basedate
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
res.setHeader("Content-Type", "application/pdf");
|
||||
res.send(new Buffer(result.data, 'base64'));
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
router.get('/login', function(req, res) {
|
||||
res.render('login');
|
||||
});
|
||||
|
||||
|
||||
hash = function(pwd, salt)
|
||||
{
|
||||
var len = 32;
|
||||
var iterations = 12000;
|
||||
var h = crypto.pbkdf2Sync(pwd, salt, iterations, len, 'sha512');
|
||||
var s = h.toString('hex')
|
||||
|
||||
return (new Buffer(s).toString('base64'));
|
||||
}
|
||||
|
||||
router.post('/login', function(req, res){
|
||||
|
||||
var email = req.body.ID1;
|
||||
var data =
|
||||
{
|
||||
"request": "auth",
|
||||
"id1" : email,
|
||||
"id2" : hash(req.body.ID2, email),
|
||||
"id3" : hash(req.body.ID3, email)
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
console.log(result.authresult);
|
||||
if(result.authresult === "OK")
|
||||
{
|
||||
console.log(result.username);
|
||||
console.log(result.sessionuuid);
|
||||
console.log(result.pfis_login_c);
|
||||
|
||||
var maxAge = 60*60*24*7*1000;
|
||||
console.log("maxAge: ", maxAge);
|
||||
|
||||
res.cookie("pfis_login_c", result.pfis_login_c, {maxAge: maxAge, httpOnly: true });
|
||||
|
||||
req.session.regenerate(function(){
|
||||
req.session.user = result.username;
|
||||
req.session.sessionuuid = result.sessionuuid;
|
||||
req.session.cache = { days : {} };
|
||||
req.session.messages = [];
|
||||
res.redirect("/");
|
||||
});
|
||||
}
|
||||
else
|
||||
res.redirect("http://www.erzbistum-bamberg.de");
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/logout', function(req, res){
|
||||
// destroy the user's session to log them out
|
||||
// will be re-created next request
|
||||
req.session.destroy(function(){
|
||||
res.clearCookie("pfis_login_c");
|
||||
res.redirect('/login');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
|
@ -0,0 +1,183 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
var jsonsrv = require('../lib/jsonsrv');
|
||||
var pcalutils = require('../lib/pcalutils');
|
||||
|
||||
function keep_in_mind_from_session(req)
|
||||
{
|
||||
console.log(req.params);
|
||||
console.log(req.session.cache.days);
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
if(typeof req.session.cache.days[req.params.day] === 'undefined')
|
||||
{
|
||||
console.log("-> day undefined");
|
||||
return null;
|
||||
}
|
||||
if(typeof req.session.cache.days[req.params.day].keep_in_mind[req.params.keep_in_mind] === 'undefined')
|
||||
{
|
||||
console.log("-> keep_in_mind undefined");
|
||||
return null;
|
||||
}
|
||||
return req.session.cache.days[req.params.day].keep_in_mind[req.params.keep_in_mind];
|
||||
}
|
||||
|
||||
function keep_in_mind_from_session_is_invalid(req, res, aw)
|
||||
{
|
||||
if(aw === null)
|
||||
{
|
||||
console.log('keep_in_mind UNDEFINED!');
|
||||
console.log(req.params);
|
||||
res.redirect('/day');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
router.get('/:day/:keep_in_mind/cancel', function(req, res, next) {
|
||||
delete req.session.cache.days[req.params.day].keep_in_mind[req.params.keep_in_mind];
|
||||
|
||||
pcalutils.redirect_after_editing(req, res);
|
||||
});
|
||||
|
||||
router.post('/:day/:keep_in_mind/commit', function(req, res, next) {
|
||||
|
||||
console.log(req.body);
|
||||
|
||||
var keep_in_mind = keep_in_mind_from_session(req);
|
||||
if(keep_in_mind_from_session_is_invalid(req, res, keep_in_mind))
|
||||
return;
|
||||
|
||||
keep_in_mind.name = req.body.edit_name;
|
||||
keep_in_mind.description = req.body.area_description;
|
||||
|
||||
console.log(keep_in_mind);
|
||||
|
||||
var data = {
|
||||
"request" : "commit_keep_in_mind",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"keep_in_mind" : req.params.keep_in_mind,
|
||||
"keep_in_mind_data" : keep_in_mind
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
delete req.session.cache.days[req.params.day].keep_in_mind[req.params.keep_in_mind];
|
||||
|
||||
pcalutils.redirect_after_editing(req, res);
|
||||
}
|
||||
else {
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
}
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
generateUID = function() {
|
||||
return ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4)
|
||||
}
|
||||
|
||||
function render_keep_in_mind_edit(req, res) {
|
||||
var the_keep_in_mind = req.session.cache.days[req.params.day].keep_in_mind[req.params.keep_in_mind];
|
||||
|
||||
res.render("event_edit_container", { date: req.session.cache.days[req.params.day].date,
|
||||
pentrytype: "keep_in_mind",
|
||||
pentrytype_pretty: "Zu-Beachten",
|
||||
pentry: the_keep_in_mind,
|
||||
pentry_href : "/keep_in_mind/" + req.params.day + "/" + req.params.keep_in_mind,
|
||||
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
||||
edit_type: (the_keep_in_mind.uuid.substr(0,4) === "new_" ? "erstellen" : "bearbeiten") });
|
||||
|
||||
console.log('render_keep_in_mind_edit');
|
||||
}
|
||||
|
||||
router.get('/:day/:keep_in_mind/edit', function(req, res, next) {
|
||||
if(typeof req.session.cache.days[req.params.day] !== 'undefined') {
|
||||
if(typeof req.session.cache.days[req.params.day].keep_in_mind[req.params.keep_in_mind] !== 'undefined') {
|
||||
render_keep_in_mind_edit(req, res);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
var day = {
|
||||
events: {},
|
||||
away : {},
|
||||
keep_in_mind : {},
|
||||
todo : {},
|
||||
vehicle_use : {}
|
||||
};
|
||||
|
||||
req.session.cache.days[req.params.day] = day;
|
||||
|
||||
console.log(req.session.cache.days);
|
||||
|
||||
console.log("created new day:");
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
}
|
||||
|
||||
if(req.params.keep_in_mind === "new") {
|
||||
var data = {
|
||||
"request" : "get_parishday",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
req.session.cache.days[req.params.day].date = result.day.date;
|
||||
req.session.date = result.day.date;
|
||||
|
||||
var uuid = "new_" + generateUID();
|
||||
var new_keep_in_mind = pcalutils.create_empty_keep_in_mind(uuid);
|
||||
req.session.cache.days[req.params.day].keep_in_mind[uuid] = new_keep_in_mind;
|
||||
|
||||
var pcalview = "";
|
||||
if(req.query.pcalview)
|
||||
pcalview = '?pcalview='+req.query.pcalview;
|
||||
|
||||
res.redirect('/keep_in_mind/'+req.params.day+'/'+uuid+'/edit'+pcalview);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
var data =
|
||||
{
|
||||
"request" : "keep_in_mind_details",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"keep_in_mind" : req.params.keep_in_mind,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
req.session.date = result.date;
|
||||
req.session.cache.days[req.params.day].date = result.date;
|
||||
|
||||
req.session.cache.days[req.params.day].keep_in_mind[req.params.keep_in_mind] = result.keep_in_mind;
|
||||
|
||||
render_keep_in_mind_edit(req, res);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
var express = require('express');
|
||||
var net = require('net');
|
||||
var crypto = require('crypto');
|
||||
|
||||
var router = express.Router();
|
||||
|
||||
var jsonsrv = require('../lib/jsonsrv');
|
||||
var pcalutils = require('../lib/pcalutils');
|
||||
|
||||
router.get('/:taskuuid', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"request" : "init_task",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"taskuuid" : req.params.taskuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
|
||||
var date = (new Date(Date.now())).toISOString().slice(0,10);
|
||||
|
||||
if(result.result === "OK") {
|
||||
res.render('pcalpub', { date: date, publicationformats: result.publicationformats, sessionuuid: req.session.sessionuuid, taskuuid: req.params.taskuuid });
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/', function(req, res, next) {
|
||||
var jsondata = {
|
||||
sessionuuid: req.session.sessionuuid,
|
||||
request : "create_task",
|
||||
tasktype: "pcalpub"
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
res.redirect('/pcalpub/'+result.taskuuid);
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/:taskuuid/download/:file', function(req, res, next) {
|
||||
var jsondata = {
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"taskuuid" : req.params.taskuuid,
|
||||
"request" : "get_file",
|
||||
"filename" : req.params.file
|
||||
};
|
||||
|
||||
/*switch(req.params.file) {
|
||||
case "cards.pdf": jsondata.request = "get_cards"; break;
|
||||
case "envelopes.pdf": jsondata.request = "get_envelopes"; break;
|
||||
default:
|
||||
var err = new Error('Not Found');
|
||||
err.status = 404;
|
||||
res.render('error', {
|
||||
message: err.message,
|
||||
error: err
|
||||
});
|
||||
return;
|
||||
}*/
|
||||
|
||||
jsonsrv.do_jsonsrv2(jsondata,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
if(req.params.file.endsWith(".html"))
|
||||
res.setHeader("Content-Type", "text/html");
|
||||
else
|
||||
res.setHeader("Content-Type", "application/pdf");
|
||||
res.send(new Buffer(result.data, 'base64'));
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error){
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
|
@ -0,0 +1,261 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
var jsonsrv = require('../lib/jsonsrv');
|
||||
var eventutils = require('../lib/eventutils');
|
||||
|
||||
function event_from_session(req) {
|
||||
console.log(req.params);
|
||||
console.log(req.session.cache.days);
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
if(typeof req.session.cache.days[req.params.day] === 'undefined') {
|
||||
console.log("-> day undefined");
|
||||
return null;
|
||||
}
|
||||
if(typeof req.session.cache.days[req.params.day].events[req.params.event] === 'undefined') {
|
||||
console.log("-> event undefined");
|
||||
return null;
|
||||
}
|
||||
if(typeof req.session.cache.days[req.params.day].events[req.params.event].thereafter[req.params.tevent] === 'undefined') {
|
||||
console.log('event_from_session: thereafter ', req.params.thereafter, ' of event ', req.params.event, ' not defined in day ', req.params.day, '!');
|
||||
return null;
|
||||
}
|
||||
return req.session.cache.days[req.params.day].events[req.params.event].thereafter[req.params.tevent];
|
||||
}
|
||||
|
||||
function event_from_session_is_invalid(req, res, ev)
|
||||
{
|
||||
if(ev === null)
|
||||
{
|
||||
console.log('EVENT UNDEFINED!');
|
||||
console.log(req.params);
|
||||
res.redirect('/day');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function end_tevent_editing(day, event, tevent) {
|
||||
console.log(Object.keys(event.thereafter).length);
|
||||
|
||||
console.log("deleteing thereafter: ", tevent.uuid);
|
||||
|
||||
delete event.thereafter[tevent.uuid];
|
||||
|
||||
console.log(Object.keys(event.thereafter).length);
|
||||
|
||||
eventutils.delete_event_if_nothing_is_edited(day, event);
|
||||
}
|
||||
|
||||
router.get('/:day/:event/:tevent/cancel', function(req, res, next) {
|
||||
console.log('NOW REDIRECT');
|
||||
|
||||
end_tevent_editing( req.session.cache.days[req.params.day],
|
||||
req.session.cache.days[req.params.day].events[req.params.event],
|
||||
req.session.cache.days[req.params.day].events[req.params.event].thereafter[req.params.tevent]);
|
||||
|
||||
|
||||
switch(req.query.pcalview) {
|
||||
case 'timeline': {
|
||||
res.redirect('/timeline/'+req.params.day+'/'+req.params.event);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
res.redirect('/day/'+req.params.day+'/'+req.params.event);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/:day/:event/:tevent/commit', function(req, res, next) {
|
||||
|
||||
console.log(req.body);
|
||||
|
||||
var event = event_from_session(req);
|
||||
if(event_from_session_is_invalid(req, res, event))
|
||||
return;
|
||||
|
||||
console.log(event);
|
||||
|
||||
event.name = req.body.edit_name;
|
||||
event.name_secondary = req.body.edit_name_secondary;
|
||||
event.visibility = req.body.combo_type;
|
||||
event.end = req.body.edit_end;
|
||||
if(event.end !== "")
|
||||
event.end_is_vague = (req.body.check_end_is_vague === "on" ? true : false);
|
||||
event.description = req.body.area_description;
|
||||
event.annotations = req.body.area_annotations;
|
||||
|
||||
console.log(event);
|
||||
|
||||
var data = {
|
||||
"request" : "commit_thereafter",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"event" : req.params.event,
|
||||
"thereafter" : req.params.tevent,
|
||||
"event_data" : event
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
end_tevent_editing(req.session.cache.days[req.params.day], req.session.cache.days[req.params.day].events[req.params.event],event);
|
||||
|
||||
switch(req.body.pcalview) {
|
||||
case 'timeline': {
|
||||
res.redirect('/timeline/' + req.params.day + '/'+ req.params.event);
|
||||
}
|
||||
default : {
|
||||
res.redirect('/day/' + req.params.day + '/' + req.params.event);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
}
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
generateUID = function() {
|
||||
return ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4)
|
||||
}
|
||||
|
||||
function render_tevent_edit(req, res) {
|
||||
var event_href = "/tevent/" + req.params.day + "/" + req.params.event + "/" + req.params.tevent;
|
||||
|
||||
var the_event = req.session.cache.days[req.params.day].events[req.params.event].thereafter[req.params.tevent];
|
||||
|
||||
res.render("event_edit_container", { date: req.session.cache.days[req.params.day].date,
|
||||
pentrytype : "tevent",
|
||||
pentrytype_pretty: the_event.parent_pretty,
|
||||
parent_event : req.session.cache.days[req.params.day].events[req.params.event],
|
||||
pentry: the_event,
|
||||
pentry_href : event_href,
|
||||
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
||||
edit_type: (the_event.uuid.substr(0,4) === "new_" ? "erstellen" : "bearbeiten") });
|
||||
|
||||
console.log('render_tevent_edit');
|
||||
}
|
||||
|
||||
router.get('/:day/:event/:tevent/edit', function(req, res, next) {
|
||||
if( req.session.cache.days[req.params.day] ) {
|
||||
if( req.session.cache.days[req.params.day].events[req.params.event] ) {
|
||||
if( req.session.cache.days[req.params.day].events[req.params.event].thereafter[req.params.tevent] ) {
|
||||
render_tevent_edit(req, res);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
var day = {
|
||||
events: {},
|
||||
away : {},
|
||||
keep_in_mind : {},
|
||||
todo : {},
|
||||
vehicle_use : {}
|
||||
};
|
||||
|
||||
req.session.cache.days[req.params.day] = day;
|
||||
console.log("created new day:");
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
}
|
||||
|
||||
if(! req.session.cache.days[req.params.day].events[req.params.event] )
|
||||
{
|
||||
// the parent-event is not loaded for editing, so create an empty object
|
||||
req.session.cache.days[req.params.day].events[req.params.event] = { in_editing: false, uuid : req.params.event, thereafter: {}};
|
||||
}
|
||||
|
||||
// for the thereafter-event to be edited or created, we always use 'event_details' als request!
|
||||
var data = {
|
||||
"request" : "event_details",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"event" : req.params.event,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
req.session.cache.days[req.params.day].date = result.date;
|
||||
req.session.date = result.date;
|
||||
|
||||
if(req.params.tevent === "new") {
|
||||
|
||||
var uuid = "new_" + generateUID();
|
||||
var new_event = eventutils.create_empty_thereafter();
|
||||
new_event.uuid = uuid;
|
||||
new_event.parent_start = result.event.start;
|
||||
req.session.cache.days[req.params.day].events[req.params.event].thereafter[uuid] = new_event;
|
||||
|
||||
req.session.cache.days[req.params.day].events[req.params.event].thereafter[uuid].parent_start = result.event.start;
|
||||
req.session.cache.days[req.params.day].events[req.params.event].thereafter[uuid].parent_pretty = "Folgeereignis von \"" + result.event.name + "\"";
|
||||
if(result.event.pretty.time.length > 0)
|
||||
req.session.cache.days[req.params.day].events[req.params.event].thereafter[uuid].parent_pretty += " (" + result.event.pretty.time + ")";
|
||||
|
||||
console.log(new_event);
|
||||
|
||||
var pcalview = "";
|
||||
if(req.query.pcalview)
|
||||
pcalview = '?pcalview='+req.query.pcalview;
|
||||
res.redirect('/tevent/'+req.params.day+'/'+ req.params.event +'/'+uuid+'/edit' + pcalview);
|
||||
}
|
||||
else {
|
||||
req.session.cache.days[req.params.day].events[req.params.event].thereafter[req.params.tevent] = {};
|
||||
|
||||
var found = false;
|
||||
// now searching the thereafter
|
||||
for(idx in result.event.thereafter) {
|
||||
if(result.event.thereafter[idx].uuid === req.params.tevent) {
|
||||
req.session.cache.days[req.params.day].events[req.params.event].thereafter[req.params.tevent] =
|
||||
result.event.thereafter[idx];
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
req.session.cache.days[req.params.day].events[req.params.event].thereafter[req.params.tevent].parent_start = result.event.start;
|
||||
req.session.cache.days[req.params.day].events[req.params.event].thereafter[req.params.tevent].parent_pretty = "Folgeereignis von \"" + result.event.name + "\"";
|
||||
if(result.event.pretty.time.length > 0)
|
||||
req.session.cache.days[req.params.day].events[req.params.event].thereafter[req.params.tevent].parent_pretty += " (" + result.event.pretty.time + ")";
|
||||
|
||||
console.log("NOW ADDING UIDs");
|
||||
eventutils.add_uids_to_event(req.session.cache.days[req.params.day].events[req.params.event].thereafter[req.params.tevent]);
|
||||
console.log("END ADDING UIDs");
|
||||
|
||||
render_tevent_edit(req, res);
|
||||
}
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
/*router.post('/:day/:event/:tevent/delete', function(req, res, next) {
|
||||
console.log(req.body);
|
||||
|
||||
var data = {
|
||||
"request" : "delete_thereafter",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"event" : req.params.event,
|
||||
"thereafter" : req.params.tevent
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv(req, res, data,
|
||||
function(req, res, result) {
|
||||
if(result.result === "OK")
|
||||
res.redirect( "/day");
|
||||
else
|
||||
res.redirect("/login");
|
||||
},
|
||||
redirect_to_login);
|
||||
});*/
|
||||
|
||||
module.exports = router;
|
||||
|
|
@ -0,0 +1,188 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
var jsonsrv = require('../lib/jsonsrv');
|
||||
var pcalutils = require('../lib/pcalutils');
|
||||
|
||||
function todo_from_session(req)
|
||||
{
|
||||
console.log(req.params);
|
||||
console.log(req.session.cache.days);
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
if(typeof req.session.cache.days[req.params.day] === 'undefined')
|
||||
{
|
||||
console.log("-> day undefined");
|
||||
return null;
|
||||
}
|
||||
if(typeof req.session.cache.days[req.params.day].todo[req.params.todo] === 'undefined')
|
||||
{
|
||||
console.log("-> todo undefined");
|
||||
return null;
|
||||
}
|
||||
return req.session.cache.days[req.params.day].todo[req.params.todo];
|
||||
}
|
||||
|
||||
function todo_from_session_is_invalid(req, res, aw)
|
||||
{
|
||||
if(aw === null)
|
||||
{
|
||||
console.log('todo UNDEFINED!');
|
||||
console.log(req.params);
|
||||
res.redirect('/day');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
router.get('/:day/:todo/cancel', function(req, res, next) {
|
||||
delete req.session.cache.days[req.params.day].todo[req.params.todo];
|
||||
|
||||
pcalutils.redirect_after_editing(req, res);
|
||||
});
|
||||
|
||||
router.post('/:day/:todo/commit', function(req, res, next) {
|
||||
|
||||
console.log(req.body);
|
||||
|
||||
var todo = todo_from_session(req);
|
||||
if(todo_from_session_is_invalid(req, res, todo))
|
||||
return;
|
||||
|
||||
todo.name = req.body.edit_name;
|
||||
todo.description = req.body.area_description;
|
||||
|
||||
console.log(todo);
|
||||
|
||||
var data = {
|
||||
"request" : "commit_todo",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"todo" : req.params.todo,
|
||||
"todo_data" : todo
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
delete req.session.cache.days[req.params.day].todo[req.params.todo];
|
||||
|
||||
pcalutils.redirect_after_editing(req, res);
|
||||
}
|
||||
else {
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
}
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
generateUID = function() {
|
||||
return ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4)
|
||||
}
|
||||
|
||||
function render_todo_edit(req, res) {
|
||||
var the_todo = req.session.cache.days[req.params.day].todo[req.params.todo];
|
||||
|
||||
res.render("event_edit_container", { date: req.session.cache.days[req.params.day].date,
|
||||
pentrytype: "todo",
|
||||
pentrytype_pretty: "Zu-Tun",
|
||||
pentry: the_todo,
|
||||
pentry_href : "/todo/" + req.params.day + "/" + req.params.todo,
|
||||
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
||||
edit_type: (the_todo.uuid.substr(0,4) === "new_" ? "erstellen" : "bearbeiten") });
|
||||
|
||||
console.log('render_todo_edit');
|
||||
}
|
||||
|
||||
router.get('/:day/:todo/edit', function(req, res, next) {
|
||||
if(typeof req.session.cache.days[req.params.day] !== 'undefined') {
|
||||
if(typeof req.session.cache.days[req.params.day].todo[req.params.todo] !== 'undefined') {
|
||||
render_todo_edit(req, res);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
var day = {
|
||||
events: {},
|
||||
away : {},
|
||||
keep_in_mind : {},
|
||||
todo : {},
|
||||
vehicle_use : {}
|
||||
};
|
||||
|
||||
req.session.cache.days[req.params.day] = day;
|
||||
|
||||
console.log(req.session.cache.days);
|
||||
|
||||
console.log("created new day:");
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
}
|
||||
|
||||
if(req.params.todo === "new") {
|
||||
var data = {
|
||||
"request" : "get_parishday",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
req.session.cache.days[req.params.day].date = result.day.date;
|
||||
req.session.date = result.day.date;
|
||||
|
||||
var uuid = "new_" + generateUID();
|
||||
var new_todo = pcalutils.create_empty_todo(uuid);
|
||||
req.session.cache.days[req.params.day].todo[uuid] = new_todo;
|
||||
|
||||
var pcalview = "";
|
||||
if(req.query.pcalview)
|
||||
pcalview = '?pcalview='+req.query.pcalview;
|
||||
res.redirect('/todo/'+req.params.day+'/'+uuid+'/edit'+pcalview);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
var data =
|
||||
{
|
||||
"request" : "todo_details",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"todo" : req.params.todo,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
req.session.date = result.date;
|
||||
req.session.cache.days[req.params.day].date = result.date;
|
||||
|
||||
req.session.cache.days[req.params.day].todo[req.params.todo] = result.todo;
|
||||
|
||||
for(var idx in req.session.cache.days[req.params.day].todo[req.params.todo].involved) {
|
||||
req.session.cache.days[req.params.day].todo[req.params.todo].involved[idx].uid = generateUID();
|
||||
}
|
||||
|
||||
console.log(req.session.cache.days[req.params.day].todo[req.params.todo].involved);
|
||||
|
||||
render_todo_edit(req, res);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
/* GET users listing. */
|
||||
router.get('/', function(req, res, next) {
|
||||
res.send('respond with a resource');
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
|
@ -0,0 +1,217 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
var jsonsrv = require('../lib/jsonsrv');
|
||||
var pcalutils = require('../lib/pcalutils');
|
||||
|
||||
function vehicle_use_from_session(req)
|
||||
{
|
||||
console.log(req.params);
|
||||
console.log(req.session.cache.days);
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
if(typeof req.session.cache.days[req.params.day] === 'undefined')
|
||||
{
|
||||
console.log("-> day undefined");
|
||||
return null;
|
||||
}
|
||||
if(typeof req.session.cache.days[req.params.day].vehicle_use[req.params.vehicle_use] === 'undefined')
|
||||
{
|
||||
console.log("-> vehicle_use undefined");
|
||||
return null;
|
||||
}
|
||||
return req.session.cache.days[req.params.day].vehicle_use[req.params.vehicle_use];
|
||||
}
|
||||
|
||||
function vehicle_use_from_session_is_invalid(req, res, aw)
|
||||
{
|
||||
if(aw === null)
|
||||
{
|
||||
console.log('vehicle_use UNDEFINED!');
|
||||
console.log(req.params);
|
||||
res.redirect('/day');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
router.get('/:day/:vehicle_use/cancel', function(req, res, next) {
|
||||
delete req.session.cache.days[req.params.day].vehicle_use[req.params.vehicle_use];
|
||||
|
||||
pcalutils.redirect_after_editing(req, res);
|
||||
});
|
||||
|
||||
router.post('/:day/:vehicle_use/commit', function(req, res, next) {
|
||||
|
||||
console.log(req.body);
|
||||
|
||||
var vehicle_use = vehicle_use_from_session(req);
|
||||
if(vehicle_use_from_session_is_invalid(req, res, vehicle_use))
|
||||
return;
|
||||
|
||||
vehicle_use.name = req.body.edit_name;
|
||||
vehicle_use.description = req.body.area_description;
|
||||
vehicle_use.vehicle_id = req.body.combo_vehicle;
|
||||
|
||||
console.log(vehicle_use);
|
||||
|
||||
var data = {
|
||||
"request" : "commit_vehicle_use",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"vehicle_use" : req.params.vehicle_use,
|
||||
"vehicle_use_data" : vehicle_use
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
delete req.session.cache.days[req.params.day].vehicle_use[req.params.vehicle_use];
|
||||
|
||||
pcalutils.redirect_after_editing(req, res);
|
||||
}
|
||||
else {
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
}
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
});
|
||||
|
||||
function get_all_vehicles(req, res) {
|
||||
var data = {
|
||||
"request" : "get_all_vehicles_legacy",
|
||||
"sessionuuid" : req.session.sessionuuid
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK") {
|
||||
req.session.cache.vehicles = result.vehicles;
|
||||
console.log(req.session.cache.vehicles);
|
||||
render_vehicle_use_edit(req, res);
|
||||
}
|
||||
else {
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
}
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
|
||||
generateUID = function() {
|
||||
return ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4)
|
||||
}
|
||||
|
||||
function render_vehicle_use_edit(req, res) {
|
||||
if(typeof req.session.cache.vehicles === 'undefined') {
|
||||
get_all_vehicles(req, res);
|
||||
return;
|
||||
}
|
||||
|
||||
var the_vehicle_use = req.session.cache.days[req.params.day].vehicle_use[req.params.vehicle_use];
|
||||
|
||||
res.render("event_edit_container", { date: req.session.cache.days[req.params.day].date,
|
||||
pentrytype: "vehicle_use",
|
||||
pentrytype_pretty: "Fahrzeugbenutzung",
|
||||
pentry: the_vehicle_use,
|
||||
pentry_href : "/vehicle_use/" + req.params.day + "/" + req.params.vehicle_use,
|
||||
pcalview : (typeof req.query.pcalview !== 'undefined' ? req.query.pcalview : 'day'),
|
||||
edit_type: (the_vehicle_use.uuid.substr(0,4) === "new_" ? "erstellen" : "bearbeiten") });
|
||||
|
||||
console.log('render_vehicle_use_edit');
|
||||
}
|
||||
|
||||
router.get('/:day/:vehicle_use/edit', function(req, res, next) {
|
||||
if(typeof req.session.cache.days[req.params.day] !== 'undefined') {
|
||||
if(typeof req.session.cache.days[req.params.day].vehicle_use[req.params.vehicle_use] !== 'undefined') {
|
||||
render_vehicle_use_edit(req, res);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
var day = {
|
||||
events: {},
|
||||
away : {},
|
||||
keep_in_mind : {},
|
||||
todo : {},
|
||||
vehicle_use : {}
|
||||
};
|
||||
|
||||
req.session.cache.days[req.params.day] = day;
|
||||
|
||||
console.log(req.session.cache.days);
|
||||
|
||||
console.log("created new day:");
|
||||
console.log(req.session.cache.days[req.params.day]);
|
||||
}
|
||||
|
||||
if(req.params.vehicle_use === "new") {
|
||||
var data = {
|
||||
"request" : "get_parishday",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
req.session.cache.days[req.params.day].date = result.day.date;
|
||||
req.session.date = result.day.date;
|
||||
|
||||
var uuid = "new_" + generateUID();
|
||||
var new_vehicle_use = pcalutils.create_empty_vehicle_use(uuid);
|
||||
req.session.cache.days[req.params.day].vehicle_use[uuid] = new_vehicle_use;
|
||||
|
||||
var pcalview = "";
|
||||
if(req.query.pcalview)
|
||||
pcalview = '?pcalview='+req.query.pcalview;
|
||||
|
||||
res.redirect('/vehicle_use/'+req.params.day+'/'+uuid+'/edit'+pcalview);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
var data =
|
||||
{
|
||||
"request" : "vehicle_use_details",
|
||||
"sessionuuid" : req.session.sessionuuid,
|
||||
"date" : req.params.day,
|
||||
"vehicle_use" : req.params.vehicle_use,
|
||||
};
|
||||
|
||||
jsonsrv.do_jsonsrv2(data,
|
||||
function(result) {
|
||||
if(result.result === "OK")
|
||||
{
|
||||
req.session.date = result.date;
|
||||
req.session.cache.days[req.params.day].date = result.date;
|
||||
|
||||
req.session.cache.days[req.params.day].vehicle_use[req.params.vehicle_use] = result.vehicle_use;
|
||||
|
||||
for(var idx in req.session.cache.days[req.params.day].vehicle_use[req.params.vehicle_use].involved) {
|
||||
req.session.cache.days[req.params.day].vehicle_use[req.params.vehicle_use].involved[idx].uid = generateUID();
|
||||
}
|
||||
|
||||
console.log(req.session.cache.days[req.params.day].vehicle_use[req.params.vehicle_use].involved);
|
||||
|
||||
render_vehicle_use_edit(req, res);
|
||||
}
|
||||
else
|
||||
jsonsrv.handle_common_jsonsrverrors(req, res, result);
|
||||
},
|
||||
function(error) {
|
||||
jsonsrv.handle_jsonconnectionerror(req, res, error);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"user":"peter","sessionuuid":"edde8ed9-4a80-43f3-9873-766b3394e0ee","cache":{"days":{}},"messages":[],"__lastAccess":1572794929468}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"user":"peter","sessionuuid":"dc6ab68b-afad-477b-b8dd-1cba470d2abf","cache":{"days":{}},"messages":[],"__lastAccess":1572797443301}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"user":"peter","sessionuuid":"f4a1d563-3409-4042-8a64-ffc2e1dfa12c","cache":{"days":{}},"messages":[],"__lastAccess":1572798472504}
|
||||
|
|
@ -0,0 +1,192 @@
|
|||
include mixins
|
||||
|
||||
- var actual_background = "yellow";
|
||||
|
||||
mixin do_location(location)
|
||||
- style="cursor: pointer; padding-top: 5px; padding-bottom: 5px;";
|
||||
- style_text="";
|
||||
- if(actual_location_id === location.id) { style+="background-color: " + actual_background; style_text="font-weight: bold;" }
|
||||
li(class="list-group-item" style=style, onclick="select_location('#{location.id}');")
|
||||
table(width="100%")
|
||||
tr
|
||||
td(style="width: 80%;")
|
||||
span(id="#{location.id}", style=style_text, data-location="true") #{location.name}
|
||||
td
|
||||
span(id="#{location.id}_sign", style=style_text) #{location.sign}
|
||||
|
||||
|
||||
mixin do_unit(unit)
|
||||
li(class="list-group-item")
|
||||
<b>#{unit.name}</b>
|
||||
if unit.locations.length > 0
|
||||
ul(class="list-group", style="margin-left: 12px; margin-bottom: 0px;")
|
||||
each location in unit.locations
|
||||
+do_location(location)
|
||||
if unit.subunits.length > 0
|
||||
ul(class="list-group", style="margin-left: 12px; margin-bottom: 0px;")
|
||||
each sub in unit.subunits
|
||||
+do_unit(sub)
|
||||
|
||||
.subroot
|
||||
.new_flex_zero(style="margin-bottom: 20px;")
|
||||
.container-fluid
|
||||
h4 Ort aus der Liste hinzufügen
|
||||
|
||||
form(class="form-horizontal", id="form-filter")
|
||||
button(type="submit", style="display: none;")
|
||||
.form-group()
|
||||
label(for='edit_filter', class="col-sm-1 control-label") Filter
|
||||
.col-sm-11
|
||||
input(id="edit_filter", type="text", class="form-control", oninput="adjust_visible_locations(this);")
|
||||
|
||||
script.
|
||||
$("#form-filter").on('submit', function(e){
|
||||
console.log('FILTER SUBMIT');
|
||||
var actual_location_name = $("#actual_location_name").val();
|
||||
console.log(actual_location_name);
|
||||
if(actual_location_name !== "" && $("#edit_filter").val() === actual_location_name) {
|
||||
console.log("DO SUBMIT");
|
||||
$("#form-locationselector").submit();
|
||||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
function set_visibility_according_to_filter(substrRegex, elems) {
|
||||
var actual_id = $("#actual_location_id").val();
|
||||
elems.each(function(index) {
|
||||
my_span = $(this);
|
||||
var txt = my_span.text();
|
||||
var id = my_span.prop('id');
|
||||
|
||||
if(substrRegex.test(txt)) {
|
||||
$(this).closest('li').show();
|
||||
if(actual_id === id)
|
||||
$("#submit_button").prop('disabled', false);
|
||||
}
|
||||
else {
|
||||
$(this).closest('li').hide();
|
||||
if(actual_id === id)
|
||||
$("#submit_button").prop('disabled', true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function adjust_visible_locations(my_input) {
|
||||
console.log(my_input.value);
|
||||
|
||||
// regex used to determine if a string contains the substring `q`
|
||||
substrRegex = new RegExp(my_input.value, 'i');
|
||||
|
||||
set_visibility_according_to_filter(substrRegex, $("[data-location='true']"));
|
||||
}
|
||||
|
||||
form(class="form-horizontal" method="POST", action="#{pentry_edit_base}/add_predefined_location", id="form-locationselector")
|
||||
input(type="hidden", name="actual_location_id", id="actual_location_id", value="#{actual_location_id}")
|
||||
input(type="hidden", name="actual_location_name", id="actual_location_name", value="#{actual_location_name}")
|
||||
input(type="hidden", name="actual_location_sign", id="actual_location_sign", value="#{actual_location_sign}")
|
||||
button(class="btn btn-success btn-sm", type="submit", id="submit_button")
|
||||
span(class="glyphicon glyphicon-ok", aria-hidden="true")
|
||||
span
|
||||
span Übernehmen
|
||||
|
||||
button(class="btn btn-warning btn-sm", type="button", onclick="goto_mainpage();")
|
||||
span(class="glyphicon glyphicon-remove-circle", aria-hidden="true")
|
||||
span
|
||||
span Abbrechen
|
||||
|
||||
.new_flex_one(style="padding-bottom: 200px;")
|
||||
.container-fluid
|
||||
ul(class="list-group")
|
||||
for unit in units
|
||||
+do_unit(unit)
|
||||
|
||||
script.
|
||||
if("#{actual_location_id}" === "")
|
||||
$("#submit_button").prop('disabled', true);
|
||||
|
||||
select_location = function(location_id)
|
||||
{
|
||||
console.log("SELECTED: " + location_id)
|
||||
actual = $("#actual_location_id").val();
|
||||
if(actual === location_id)
|
||||
{
|
||||
console.log("NOTHIN CHANGED");
|
||||
return;
|
||||
}
|
||||
|
||||
$("#"+actual).css("font-weight", "normal");
|
||||
$("#"+actual+"_sign").css("font-weight", "normal");
|
||||
$("#"+actual).closest("li").css("background-color", "#fff");
|
||||
|
||||
$("#"+location_id).css("font-weight", "bold");
|
||||
$("#"+location_id+"_sign").css("font-weight", "bold");
|
||||
$("#"+location_id).closest("li").css("background-color", "#{actual_background}");
|
||||
|
||||
$("#actual_location_id").val(location_id);
|
||||
$("#actual_location_name").val($("#"+location_id).text());
|
||||
$("#actual_location_sign").val($("#"+location_id+"_sign").text());
|
||||
|
||||
$("#submit_button").prop('disabled', false);
|
||||
}
|
||||
|
||||
var all_locations = [];
|
||||
|
||||
var locationMatcher = function(locations) {
|
||||
return function findMatches(q, cb) {
|
||||
var matches, substringRegex;
|
||||
|
||||
// an array that will be populated with substring matches
|
||||
matches = [];
|
||||
|
||||
// regex used to determine if a string contains the substring `q`
|
||||
substrRegex = new RegExp(q, 'i');
|
||||
|
||||
// iterate through the pool of strings and for any string that
|
||||
// contains the substring `q`, add it to the `matches` array
|
||||
$.each(locations, function(i, loc) {
|
||||
console.log('location: ', loc);
|
||||
if (substrRegex.test(loc.name)) {
|
||||
matches.push(loc);
|
||||
}
|
||||
});
|
||||
|
||||
cb(matches);
|
||||
};
|
||||
};
|
||||
|
||||
$(document).ready(function() {
|
||||
$("[data-location='true']").each(function(index){
|
||||
all_locations.push({id: this.id, name: this.innerText});
|
||||
});
|
||||
|
||||
console.log(all_locations);
|
||||
|
||||
$("#edit_filter").typeahead({
|
||||
hint: true,
|
||||
highlight: true,
|
||||
minLength: 1
|
||||
},
|
||||
{
|
||||
name: 'locations',
|
||||
source: locationMatcher(all_locations),
|
||||
display: 'name',
|
||||
limit: 15
|
||||
}).bind('typeahead:select typeahead:autocomplete', function(ev, suggestion) {
|
||||
console.log(suggestion);
|
||||
select_location(suggestion.id);
|
||||
});
|
||||
|
||||
$("#edit_filter").focus();
|
||||
|
||||
});
|
||||
|
||||
$("#form-locationselector").on('submit', function(e) {
|
||||
var data = {
|
||||
name : $("#actual_location_name").val(),
|
||||
sign : $("#actual_location_sign").val(),
|
||||
id : $("#actual_location_id").val()
|
||||
};
|
||||
add_location(data);
|
||||
|
||||
e.preventDefault();
|
||||
});
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
include mixins
|
||||
include mixins_day
|
||||
|
||||
doctype html
|
||||
html
|
||||
include header
|
||||
body
|
||||
|
||||
.root
|
||||
.new_flex_zero
|
||||
+nav_bare("PfarrInfoSystem")
|
||||
|
||||
.container-fluid
|
||||
|
||||
h1(style="margin-top: 0px;") PfIS - PfarrInfoSystem
|
||||
p.
|
||||
<b>Version 2.0</b><br/>
|
||||
<b>Copyright (C) Peter Fischer 2010 - 2018</b>
|
||||
p.
|
||||
PfIS ist lizenziert unter der GPL Version 2 oder später (siehe unten "Lizenz").<br/>
|
||||
Um den Quelltext zu bekommen, wenden Sie sich bitte an <a href="mailto:peter@halieus.de">peter@halieus.de</a>
|
||||
|
||||
hr
|
||||
|
||||
.new_flex_one
|
||||
.container-fluid
|
||||
|
||||
h3(style="margin-top: 0px;") Verwendete Bibliotheken
|
||||
p PfIS wäre nicht möglich ohne die Verwendung folgender freier Programm-Bibliotheken:
|
||||
|
||||
h4(style="margin-bottom: 2px;") Boost (http://www.boost.org)
|
||||
p Verschiedene C++-Programmbibliotheken.
|
||||
|
||||
h4(style="margin-bottom: 2px;") websocketpp (https://github.com/zaphoyd/websocketpp)
|
||||
p WebSocket-Implementierung
|
||||
|
||||
h4(style="margin-bottom: 2px;") Cairo, cairomm (http://www.cairographics.org)
|
||||
p.
|
||||
Vektororientiertes Zeichnen (für die Druckfunktion).
|
||||
Ferner der C++-Wrapper.
|
||||
|
||||
h4(style="margin-bottom: 2px;") Pango (http://www.pango.org)
|
||||
p Textsatz (für die Druckfuntion).
|
||||
|
||||
h4(style="margin-bottom: 2px;") Poppler (http://poppler.freedesktop.org)
|
||||
p PDF-Bibliothek (Anzeige der Druckdateien).
|
||||
|
||||
h4(style="margin-bottom: 2px;") OpenSSL (http://www.openssl.org)
|
||||
p Verschlüsselung der Daten.
|
||||
|
||||
h4(style="margin-bottom: 2px;") libarchive (http://code.google.com/p/libarchive)
|
||||
p Datenarchivoperationen.
|
||||
|
||||
h4(style="margin-bottom: 2px;") (lib)bzip2 (http://www.bzip.org)
|
||||
p Datenkompression.
|
||||
|
||||
h4(style="margin-bottom: 2px;") xz (http://tukaani.org/xz)
|
||||
p Datenkompression.
|
||||
|
||||
h4(style="margin-bottom: 2px;") pugixml (http://www.pugixml.org)
|
||||
p XML-Datenverarbeitung.
|
||||
|
||||
h4(style="margin-bottom: 2px;") glib (http://www.gtk.org)
|
||||
p Diverse Basis-Funktionen.
|
||||
|
||||
h4(style="margin-bottom: 2px;") glibmm, pangomm (http://www.gtkmm.org)
|
||||
p C++-Wrapper für Glib und Pango.
|
||||
|
||||
h4(style="margin-bottom: 2px;") Node.js (http://nodejs.org)
|
||||
p.
|
||||
Server-Side JavaScript, das aufbauend auf dem PfIS(JSON)Server die Benutzerschnittstelle erzeugt.
|
||||
Dies wäre nicht möglich, ohne einige Node.js-Module, besonders express.js, express-session, socket.io und jade.
|
||||
(Links hierzu über <a href="http://www.npmjs.com">npm</a>).
|
||||
|
||||
h4(style="margin-bottom: 2px;") jsoncpp (https://github.com/open-source-parsers/jsoncpp)
|
||||
p Bildet die Brücke zwischen dem eigentlichen PfIS (im Sinne der Datenbank) und Node.js
|
||||
|
||||
h4(style="margin-bottom: 2px;") Weiteres
|
||||
p Daneben die Bibliotheken, von denen die oben genannten abhängig sind.</message>
|
||||
|
||||
h3 Lizenz
|
||||
p.
|
||||
<i><b>GNU GENERAL PUBLIC LICENSE</b></i><br/>
|
||||
Die Formulierung der Lizenz kann gefunden werden unter der Adresse <a href="http://www.gnu.org/licenses/gpl-2.0.html" target="_blank">http://www.gnu.org/licenses/gpl-2.0.html</a>.
|
||||
|
|
@ -0,0 +1,220 @@
|
|||
include mixins
|
||||
include mixins_day
|
||||
|
||||
- var actual_background = "yellow";
|
||||
|
||||
mixin do_actor(actor)
|
||||
- var my_class;
|
||||
- if(actor.available === false) my_class = "panel-danger";
|
||||
- actual_actor_id === actor.id ? my_class = "panel-success" : my_class="panel-default";
|
||||
|
||||
.panel(class=my_class, id=actor.id, data-actorname=actor.name, data-actor="", data-status="#{actor.status}", data-available="#{actor.available}")
|
||||
.panel-heading(onclick="select_actor('#{actor.id}');")
|
||||
- var my_cursor = "cursor: pointer;";
|
||||
//- actor.available ? my_cursor = "cursor: pointer;" : my_cursor = "cursor: auto;"
|
||||
h4.panel-title(style=my_cursor)
|
||||
| #{actor.name}
|
||||
if(actor.available === false)
|
||||
.small(style="color: #a94442; margin-bottom: 0px;")
|
||||
i Abwesend
|
||||
|
|
||||
| !{actor.unavailable_reason}
|
||||
if(actor.other_events_today.length > 0)
|
||||
.panel-body
|
||||
p(style="margin-bottom: 0px;")
|
||||
| Heute bereits eingebunden in:
|
||||
each ev in actor.other_events_today
|
||||
+pevent_with_thereafter_timeline("", ev, false)
|
||||
//- ul(style="margin-bottom: 0px; padding-inline-start: 15px;")
|
||||
//- each ev in actor.other_events_today
|
||||
//- li
|
||||
//- i !{ev.name}
|
||||
//- |
|
||||
//- span.small !{ev.name_secondary}
|
||||
//- .small !{ev.time}
|
||||
//- if(ev.is_involved_in_mainevent === false)
|
||||
//- .small [Nicht direkt in Haupt-Ereignis eingebunden.]
|
||||
//- if(ev.roles !== "")
|
||||
//- .small Mitwirkung: #{ev.roles}
|
||||
//- if(ev.thereafterevents.length > 0)
|
||||
//- ul(style="margin-bottom: 0px; padding-inline-start: 15px;")
|
||||
//- each tev in ev.thereafterevents
|
||||
//- li
|
||||
//- i !{tev.name}
|
||||
//- |
|
||||
//- span.small !{ev.name_secondary}
|
||||
//- .small !{tev.time}
|
||||
//- if(tev.roles !== "")
|
||||
//- .small Mitwirkung: #{tev.roles}
|
||||
|
||||
mixin do_unit(unit)
|
||||
- var my_uid = generateUID();
|
||||
- var my_border_color = unit.is_pastoral ? "border-color: "+ unit.color +"; " : "";
|
||||
- var my_background_image = unit.is_pastoral ? "background-image: linear-gradient(to bottom,"+unit.color+" 50%, #ffffff 100%); border-color: #ffffff; background-color: #ffffff; border-top-left-radius: 0px; border-top-right-radius: 0px;" : "";
|
||||
- var my_border_top_color = unit.is_pastoral ? "border-top-color: #ffffff;" : "";
|
||||
- var in_class = unit.subunits.length > 0 ? "in" : "";
|
||||
.panel.panel-default.panel_group_and_unit(id=my_uid, data-elemname=unit.name, data-parishdb="", data-dn=unit.dn, data-elemtype="unit", data-depth=unit.depth, style=my_border_color )
|
||||
.panel-heading(style=my_background_image)
|
||||
h4.panel-title(data-toggle="collapse", data-target="#PANEL_"+my_uid, aria-expanded="false", aria-controls="PANEL_"+my_uid) #{unit.name}
|
||||
//- border-bottom: 2px solid #{elem.color};
|
||||
.panel-collapse.collapse(class=in_class, id="PANEL_"+my_uid)
|
||||
.panel-body(style="padding: 10px; "+my_border_top_color)
|
||||
if unit.actors.length > 0
|
||||
each actor in unit.actors
|
||||
+do_actor(actor)
|
||||
if unit.subunits.length > 0
|
||||
each sub in unit.subunits
|
||||
+do_unit(sub)
|
||||
|
||||
.subroot
|
||||
.new_flex_zero(style="margin-bottom: 20px;")
|
||||
.container-fluid
|
||||
h4 Beteiligten aus der Liste hinzufügen
|
||||
|
||||
label
|
||||
input(type="checkbox", id="show_retired")
|
||||
//- checked
|
||||
span
|
||||
span Ausgeschiedene anzeigen
|
||||
|
||||
form(class="form-horizontal", method="POST", action="", id="form_actorselector")
|
||||
input(type="hidden", name="actual_actor_id", id="actual_actor_id", value="#{actual_actor_id}")
|
||||
input(type="hidden", name="actual_actor_name", id="actual_actor_name", value="#{actual_actor_name}")
|
||||
input(type="hidden", name="for_role", id="for_role", value="#{for_role}")
|
||||
button(class="btn btn-success btn-sm", type="submit", id="submit_button")
|
||||
span(class="glyphicon glyphicon-ok", aria-hidden="true")
|
||||
span
|
||||
span Übernehmen
|
||||
//- goto_mainpage();
|
||||
button(class="btn btn-warning btn-sm", type="button", onclick="history.back();")
|
||||
span(class="glyphicon glyphicon-remove-circle", aria-hidden="true")
|
||||
span
|
||||
span Abbrechen
|
||||
|
||||
p.small(style="margin-top: 7px; margin-bottom: 0px; font-weight: bold;") Aktuell ausgewählt
|
||||
p(style="font-size: 100%; font-weight: bold; margin-bottom: 0px;")
|
||||
- var actual_name = (actual_actor_name === "" ? "–" : actual_actor_name)
|
||||
span#actual_name #{actual_name}
|
||||
#errorpane
|
||||
|
||||
.new_flex_one(style="padding-bottom: 200px;")
|
||||
.container-fluid
|
||||
for unit in units
|
||||
+do_unit(unit)
|
||||
|
||||
script.
|
||||
pcal_pentry_edit_manager.show_searchbar("adjust_visible_actors(this);");
|
||||
|
||||
if("#{actual_actor_id}" === "")
|
||||
$("#submit_button").prop('disabled', true);
|
||||
|
||||
$("#show_retired").change(function()
|
||||
{
|
||||
if(this.checked)
|
||||
$("[data-status='retired']").show();
|
||||
else
|
||||
$("[data-status='retired']").hide();
|
||||
});
|
||||
$("[data-status='retired']").hide();
|
||||
|
||||
|
||||
select_actor = function(actor_id)
|
||||
{
|
||||
console.log("SELECTED: " + actor_id);
|
||||
var actual_id = $("#actual_actor_id").val();
|
||||
console.log(actual_id);
|
||||
if(actual_id === actor_id)
|
||||
{
|
||||
console.log("NOTHIN CHANGED");
|
||||
return;
|
||||
}
|
||||
|
||||
var new_panel = $("#" + actor_id).closest('.panel');
|
||||
//if(new_panel.hasClass("panel-danger")) // i. e.: not available
|
||||
// return;
|
||||
|
||||
if(actual_id !== "") {
|
||||
var replace_class = "panel-default";
|
||||
var old_panel = $("#" + actual_id).closest('.panel');
|
||||
console.log(old_panel.data("available"));
|
||||
console.log(old_panel);
|
||||
if(old_panel.data("available") == false) replace_class = "panel-danger";
|
||||
old_panel.removeClass('panel-success').addClass(replace_class);
|
||||
}
|
||||
|
||||
var replace_class = 'panel-default';
|
||||
if(new_panel.hasClass("panel-danger"))
|
||||
replace_class = "panel-danger";
|
||||
new_panel.removeClass(replace_class).addClass('panel-success');
|
||||
|
||||
|
||||
$("#actual_actor_id").val(actor_id);
|
||||
var actorname = $("#"+actor_id).data("actorname");
|
||||
$("#actual_actor_name").val(actorname);
|
||||
|
||||
$("#actual_name").text(actorname);
|
||||
|
||||
$("#errorpane").empty();
|
||||
$("#submit_button").prop('disabled', false);
|
||||
}
|
||||
|
||||
function set_visibility_according_to_filter(substrRegex, elems) {
|
||||
var units_are_shown = false;
|
||||
|
||||
if(!units_are_shown) {
|
||||
$("[data-elemtype='unit']").each(function(index) {
|
||||
var panel_id = "#PANEL_" + $(this).prop('id');
|
||||
$(panel_id).collapse('show');
|
||||
});
|
||||
console.log('SHOW ALL UNITS');
|
||||
units_are_shown = true;
|
||||
}
|
||||
|
||||
var actual_id = $("#actual_actor_id").val();
|
||||
|
||||
elems.each(function(index) {
|
||||
my_panel = $(this);
|
||||
var txt = my_panel.data("actorname");
|
||||
var id = my_panel.prop('id');
|
||||
|
||||
if(substrRegex.test(txt)) {
|
||||
my_panel.show();
|
||||
if(actual_id === id) {
|
||||
$("#submit_button").prop('disabled', false);
|
||||
$("#errorpane").empty();
|
||||
}
|
||||
}
|
||||
else {
|
||||
my_panel.hide();
|
||||
if(actual_id === id) {
|
||||
$("#submit_button").prop('disabled', true);
|
||||
$("#errorpane").html(get_compiled_message("danger", "Auswahl ungültig", "Durch die Filterangabe wurde Ihre Auswahl ungültig!"));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function adjust_visible_actors(my_input) {
|
||||
console.log(my_input.value);
|
||||
|
||||
// regex used to determine if a string contains the substring `q`
|
||||
substrRegex = new RegExp(my_input.value, 'i');
|
||||
|
||||
set_visibility_according_to_filter(substrRegex, $("[data-status='active']"));
|
||||
|
||||
if( $("#show_retired").prop('checked') ) {
|
||||
set_visibility_according_to_filter(substrRegex, $("[data-status='retired']"));
|
||||
}
|
||||
}
|
||||
|
||||
$("#form_actorselector").on('submit', function(e) {
|
||||
var data = {
|
||||
for_role: $("#for_role").val(),
|
||||
name : $("#actual_actor_name").val(),
|
||||
id : $("#actual_actor_id").val()
|
||||
};
|
||||
pcal_pentry_edit_manager.add_involved(data);
|
||||
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
include mixins
|
||||
|
||||
- var actual_background = "yellow";
|
||||
|
||||
mixin do_actor(actor)
|
||||
- style="cursor: pointer; padding-top: 5px; padding-bottom: 5px;";
|
||||
- style_text="";
|
||||
- if(actual_actor_id === actor.id) { style+="background-color: " + actual_background; style_text="font-weight: bold;" }
|
||||
li(class="list-group-item", style=style, onclick="select_actor('#{actor.id}')", data-status="#{actor.status}")
|
||||
span(id="#{actor.id}", style=style_text) #{actor.name}
|
||||
|
||||
mixin do_unit(unit)
|
||||
li(class="list-group-item")
|
||||
<b>#{unit.name}</b>
|
||||
if unit.actors.length > 0
|
||||
ul(class="list-group", style="margin-left: 12px; margin-bottom: 0px;")
|
||||
each actor in unit.actors
|
||||
+do_actor(actor)
|
||||
if unit.subunits.length > 0
|
||||
ul(class="list-group", style="margin-left: 12px; margin-bottom: 0px;")
|
||||
each sub in unit.subunits
|
||||
+do_unit(sub)
|
||||
|
||||
.subroot
|
||||
.new_flex_zero(style="margin-bottom: 20px;")
|
||||
.container-fluid
|
||||
h4 Beteiligten aus der Liste hinzufügen
|
||||
|
||||
label
|
||||
input(type="checkbox", checked, id="show_retired")
|
||||
span
|
||||
span Ausgeschiedene anzeigen
|
||||
|
||||
form(class="form-horizontal", id="form-filter")
|
||||
.form-group
|
||||
label(for='edit_filter', class="col-sm-1 control-label") Filter
|
||||
.col-sm-11
|
||||
input(id="edit_filter", type="text", class="form-control", oninput="adjust_visible_actors(this);")
|
||||
script.
|
||||
$("#form-filter").on('submit', function(e){
|
||||
console.log('FILTER SUBMIT');
|
||||
e.preventDefault();
|
||||
});
|
||||
// HINT: the 'autofocus'-attribute is obviously only interpreted once!!!
|
||||
$("#edit_filter").focus();
|
||||
|
||||
form(class="form-horizontal", method="POST", action="#{pentry_edit_base}/add_actor", id="form-actorselector")
|
||||
input(type="hidden", name="actual_actor_id", id="actual_actor_id", value="#{actual_actor_id}")
|
||||
input(type="hidden", name="actual_actor_name", id="actual_actor_name", value="#{actual_actor_name}")
|
||||
input(type="hidden", name="for_role", id="for_role", value="#{for_role}")
|
||||
button(class="btn btn-success btn-sm", type="submit", id="submit_button")
|
||||
span(class="glyphicon glyphicon-ok", aria-hidden="true")
|
||||
span
|
||||
span Übernehmen
|
||||
|
||||
button(class="btn btn-warning btn-sm", type="button", onclick="goto_mainpage();")
|
||||
span(class="glyphicon glyphicon-remove-circle", aria-hidden="true")
|
||||
span
|
||||
span Abbrechen
|
||||
|
||||
.new_flex_one(style="padding-bottom: 200px;")
|
||||
.container-fluid
|
||||
ul(class="list-group")
|
||||
for unit in units
|
||||
+do_unit(unit)
|
||||
|
||||
script.
|
||||
if("#{actual_actor_id}" === "")
|
||||
$("#submit_button").prop('disabled', true);
|
||||
|
||||
$("#show_retired").change(function()
|
||||
{
|
||||
if(this.checked)
|
||||
$("[data-status='retired']").show();
|
||||
else
|
||||
$("[data-status='retired']").hide();
|
||||
});
|
||||
|
||||
select_actor = function(actor_id)
|
||||
{
|
||||
console.log("SELECTED: " + actor_id);
|
||||
var actual = $("#actual_actor_id").val();
|
||||
console.log(actual);
|
||||
if(actual === actor_id)
|
||||
{
|
||||
console.log("NOTHIN CHANGED");
|
||||
return;
|
||||
}
|
||||
if(actual !== "") {
|
||||
$("#"+actual).css("font-weight", "normal");
|
||||
$("#"+actual).parent().css("background-color", "#fff");
|
||||
}
|
||||
|
||||
$("#"+actor_id).css("font-weight", "bold");
|
||||
$("#"+actor_id).parent().css("background-color", "#{actual_background}");
|
||||
|
||||
$("#actual_actor_id").val(actor_id);
|
||||
$("#actual_actor_name").val($("#"+actor_id).text());
|
||||
|
||||
$("#submit_button").prop('disabled', false);
|
||||
}
|
||||
|
||||
function set_visibility_according_to_filter(substrRegex, elems) {
|
||||
var actual_id = $("#actual_actor_id").val();
|
||||
elems.each(function(index) {
|
||||
my_span = $(this).find(':first-child');
|
||||
var txt = my_span.text();
|
||||
var id = my_span.prop('id');
|
||||
|
||||
if(substrRegex.test(txt)) {
|
||||
$(this).show();
|
||||
if(actual_id === id)
|
||||
$("#submit_button").prop('disabled', false);
|
||||
}
|
||||
else {
|
||||
$(this).hide();
|
||||
if(actual_id === id)
|
||||
$("#submit_button").prop('disabled', true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function adjust_visible_actors(my_input) {
|
||||
console.log(my_input.value);
|
||||
|
||||
// regex used to determine if a string contains the substring `q`
|
||||
substrRegex = new RegExp(my_input.value, 'i');
|
||||
|
||||
set_visibility_according_to_filter(substrRegex, $("[data-status='active']"));
|
||||
|
||||
if( $("#show_retired").prop('checked') ) {
|
||||
set_visibility_according_to_filter(substrRegex, $("[data-status='retired']"));
|
||||
}
|
||||
}
|
||||
|
||||
$("#form-actorselector").on('submit', function(e) {
|
||||
var data = {
|
||||
for_role: $("#for_role").val(),
|
||||
name : $("#actual_actor_name").val(),
|
||||
id : $("#actual_actor_id").val()
|
||||
};
|
||||
add_involved(data);
|
||||
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
include mixins
|
||||
|
||||
doctype strict
|
||||
html
|
||||
include header
|
||||
script(src='/javascripts/pfiswebsocket.js')
|
||||
script(src='/templates/pcalimport_changes.js')
|
||||
script(src='/javascripts/runtime.js')
|
||||
link(href="/stylesheets/style_week.css", rel="stylesheet")
|
||||
style.
|
||||
.cell_element { display: table-cell; }
|
||||
.td_new_celebration { padding-top: 10px; }
|
||||
.give_margin_left { padding-left: 10px; }
|
||||
@media only screen and (max-width: 768px) {
|
||||
.cell_element {
|
||||
display: block;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.td_new_celebration { padding-top: 0px; }
|
||||
.give_margin_left { padding-left: 0px; }
|
||||
}
|
||||
|
||||
.changes_details {
|
||||
max-height: 250px;
|
||||
overflow-y: scroll;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.day_details {
|
||||
max-height: 200px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
body
|
||||
.modal.fade(id="collectUserDataDialog", role="dialog", aria-labelledby="collectUserDataDialogLabel", aria-hidden="true")
|
||||
.modal-dialog(role="document")
|
||||
.modal-content
|
||||
.modal-header
|
||||
h4(class="modal-title", id="collectUserDataDialogLabel") Benutzer-Einträge auslesen
|
||||
.modal-body
|
||||
p(style="font-weight: bold; font-style: italic;") Bitte warten Sie, während die Einträge der Benutzer von PfIS zusammengestellt werden ...
|
||||
|
||||
.modal.fade(id="confirmReject", role="dialog", aria-labelledby="confirmRejectLabel", aria-hidden="true")
|
||||
.modal-dialog(role="document")
|
||||
.modal-content
|
||||
.modal-header
|
||||
button(type="button", class="close", data-dismiss="modal", aria-hidden="true") ×
|
||||
h4(class="modal-title", id="confirmRejectLabel") Ablehnung bestätigen
|
||||
.modal-body
|
||||
p Sind Sie sicher, dass Sie diese Änderung verwerfen wollen?
|
||||
br
|
||||
span Die entsprechende Datei wird vom Datenträger gelöscht!
|
||||
.modal-footer
|
||||
button(type="button", class="btn btn-default", data-dismiss="modal") Abbrechen
|
||||
button(type="button", class="btn btn-danger", id="confirm") Änderung tatsächlich ablehnen
|
||||
|
||||
.root
|
||||
.new_flex_zero
|
||||
+nav("PfarrInfoSystem", "mainmenu")
|
||||
.container-fluid
|
||||
h1 Elemente in den Pfarrkalender importieren
|
||||
p Lesen sie alle von den Nutzern von PfIS erstellten Kalender-Einträge aus bzw. importieren Sie eine Datei und entscheiden Sie, welche Einträge übernommen werden sollen.
|
||||
.btn-toolbar(style="margin-bottom: 20px;")
|
||||
.btn-group.btn-group-xs
|
||||
button.btn.btn-primary.button-import-userdata Einträge der Nutzer auslesen
|
||||
.btn-group.btn-group-xs
|
||||
button.btn.btn-primary.button-import-file Datei importieren
|
||||
|
||||
.new_flex_one
|
||||
.container-fluid#changes_parent
|
||||
|
||||
|
||||
//- var parishid = 0;
|
||||
//-each parish in parishes
|
||||
//- - var my_uid = generateUID();
|
||||
//- if(parish.volunteergroups.length > 0)
|
||||
//- .panel.panel-default.parish-marker(style="border-width: 3px;", data-parishid=parishid)
|
||||
//- .panel-heading
|
||||
//- h4.panel-title(data-toggle="collapse", data-target="#PANEL_#{my_uid}", aria-expanded="false", aria-controls="PANEL_#{my_uid}", style="cursor: pointer;") #{parish.name}
|
||||
//- .panel-collapse.collapse(id="PANEL_#{my_uid}")
|
||||
//- .panel-body(style="padding: 10px;")
|
||||
//- .container-fluid
|
||||
//- .row
|
||||
//- button.btn.btn-primary.btn-xs.button-select-all Alle auswählen
|
||||
//- button.btn.btn-default.btn-xs.button-deselect-all Alle abwählen
|
||||
//- table(width='100%', class='table table-condensed', style='margin-bottom: 10px;')
|
||||
//- thead
|
||||
//- tr
|
||||
//- td <b>Name</b>
|
||||
//- tbody
|
||||
//- for grp in parish.volunteergroups
|
||||
//- tr(onclick="$(this).toggleClass('group_is_selected'); update_button_volunteergroupsselected();", style="cursor: pointer;", data-dn="#{grp.dn}", data-group)
|
||||
//- td #{grp.name}
|
||||
//- - parishid++;
|
||||
|
||||
script.
|
||||
var ws = new PfISWebSocket("#{sessionuuid}", "#{taskuuid}");
|
||||
ws.bind_standard_close_handler();
|
||||
|
||||
$(".button-import-userdata").on('click', function(event) {
|
||||
console.log('USERDATA');
|
||||
$('#collectUserDataDialog').modal({
|
||||
backdrop: 'static',
|
||||
keyboard: false
|
||||
});
|
||||
ws.send('collect_userdata', {});
|
||||
});
|
||||
|
||||
$(".button-import-file").on('click', function(event) {
|
||||
|
||||
});
|
||||
|
||||
ws.bind("collected_changes", function(data) {
|
||||
console.log(data);
|
||||
var html = pcalimport_changes_template(data);
|
||||
if(data.source==="user-data")
|
||||
$('#collectUserDataDialog').modal('hide');
|
||||
$("#changes_parent").empty();
|
||||
$("#changes_parent").html(html);
|
||||
$("#changes_parent").find(".btn-success").on('click', on_click_accept);
|
||||
$('html, body').scrollTop(0);
|
||||
});
|
||||
|
||||
function on_click_accept() {
|
||||
$(this).closest('.btn-group').find('.btn').attr('disabled', 'disabled');
|
||||
console.log('SUCCESS CLICKED', this);
|
||||
}
|
||||
|
||||
function update_button_volunteergroupsselected() {
|
||||
if($(".group_is_selected").length > 0)
|
||||
$("#button_volunteergroupsselected").removeClass("disabled");
|
||||
else
|
||||
$("#button_volunteergroupsselected").addClass("disabled")
|
||||
}
|
||||
|
||||
function volunteergroupsselected() {
|
||||
if($("#button_volunteergroupsselected").hasClass("disabled"))
|
||||
return;
|
||||
|
||||
var selected_groups = [];
|
||||
|
||||
$("[data-parishid]").each(function(index){
|
||||
var this_parish = { id: $(this).data('parishid'), selected_groups : [] };
|
||||
$(this).find(".group_is_selected").each(function(index) {
|
||||
this_parish.selected_groups.push($(this).data('dn'));
|
||||
});
|
||||
selected_groups.push(this_parish);
|
||||
});
|
||||
|
||||
console.log(selected_groups);
|
||||
console.log($("#combo_sortorder").val());
|
||||
|
||||
|
||||
ws.send('get_volunteerslist', {sortorder: parseInt($("#combo_sortorder").val()), groups : selected_groups});
|
||||
}
|
||||
|
||||
ws.bind('get_volunteerslist_result', function(data) {
|
||||
console.log(data);
|
||||
var html = volunteerslist_result_template(data);
|
||||
$("#volunteerslist_list").empty();
|
||||
$("#volunteerslist_list").html(html);
|
||||
$("#volunteerslist").show();
|
||||
$("#volunteerslist_list").parent().parent().scrollTop(0);
|
||||
|
||||
$('html, body').scrollTop(0);
|
||||
})
|
||||
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
include mixins_week
|
||||
|
||||
mixin show_changes(pentrys, n)
|
||||
if(pentrys.length > 0)
|
||||
fieldset
|
||||
legend !{n}
|
||||
each pentry in pentrys
|
||||
- var my_uid = generateUID();
|
||||
.panel.panel-primary(style="margin-left: 10px;")
|
||||
.panel-heading
|
||||
h3.panel-title(data-toggle="collapse", data-target="#"+my_uid, style="cursor: pointer;") !{pentry.name}
|
||||
.small(style="font-size: 85%;")
|
||||
i !{pentry.punit}
|
||||
.panel-collapse.collapse(id=my_uid)
|
||||
.panel-body
|
||||
ul.nav.nav-tabs
|
||||
each c in pentry.changes
|
||||
- var cls = (c.idx === 0 ? "active" : "");
|
||||
- c.tab_id = generateUID();
|
||||
- var color = c.type === "new" ? "green" : (c.type==="remove" ? "red" : "gold")
|
||||
li(class=cls, style="border-bottom: 3px solid " + color +";")
|
||||
a(data-toggle="tab", href="#"+c.tab_id) !{c.user} !{c.tab_id}
|
||||
|
||||
.tab-content(style="padding-left: 10px; padding-right: 10px;")
|
||||
each c in pentry.changes
|
||||
- var cls = (c.idx === 0 ? "active" : "");
|
||||
- var clss = ["tab-pane", cls]
|
||||
div(class=clss, id=c.tab_id)
|
||||
.btn-group.btn-group-sm(style="margin-top: 10px;")
|
||||
button.btn.btn-success Akzeptieren
|
||||
button.btn.btn-danger(data-toggle="modal", data-target="#confirmReject") Ablehnen
|
||||
|
||||
.changes_details
|
||||
if(c.type !== "new")
|
||||
if(pentry.punit !== c.punit)
|
||||
p(style="margin-bottom: 10px;")
|
||||
b !{c.punit}
|
||||
else
|
||||
p.small(style="margin-bottom: 10px;")
|
||||
b Gleicher pastoraler Kontext.
|
||||
|
||||
if(c.diff !== "")
|
||||
p(style="margin-bottom: 0px;")
|
||||
b Diff
|
||||
pre
|
||||
code
|
||||
!{c.diff}
|
||||
p(style="margin-bottom: 0px;")
|
||||
b Roh-Daten
|
||||
pre
|
||||
code
|
||||
!{c.data}
|
||||
|
||||
|
||||
mixin pday_with_changes(pday)
|
||||
.panel.panel-default(data-date=pday.date)
|
||||
.panel-heading
|
||||
h3.panel-title(data-toggle="collapse", data-target="#PANEL_#{pday.date}", aria-expanded="false", aria-controls="PANEL_#{pday.date}", style="cursor: pointer;") !{pday.date_pretty}
|
||||
.panel-collapse.collapse(id="PANEL_#{pday.date}")
|
||||
.panel-body(style="padding: 10px;")
|
||||
- var celebration_printed = false;
|
||||
.day_details
|
||||
table(width="100%")
|
||||
+week_day_mobile(pday.day)
|
||||
+show_changes(pday.events, "Ereignisse")
|
||||
+show_changes(pday.todos, "Zu Tun")
|
||||
+show_changes(pday.away, "Abwesend")
|
||||
+show_changes(pday.keep_in_mind, "Zu Beachten")
|
||||
+show_changes(pday.vehicle_use, "Fahrzeugbenutzung")
|
||||
|
||||
each day in changes
|
||||
+pday_with_changes(day)
|
||||
|
|
@ -0,0 +1,452 @@
|
|||
- var formats_string = JSON.stringify(data.formats);
|
||||
- var formats_volunteers_string = JSON.stringify(data.formats_volunteers)
|
||||
|
||||
include mixins
|
||||
include mixins_birthdaycards
|
||||
|
||||
doctype html
|
||||
html
|
||||
include header
|
||||
script(src="/javascripts/validator.min.js")
|
||||
script(src='/javascripts/pfiswebsocket.js')
|
||||
script(src='/templates/birthdaycards_personview.js')
|
||||
script(src='/templates/birthdaycards_volunteerslist.js')
|
||||
script(src='/templates/birthdaycards_volunteerspersonslist.js')
|
||||
script(src='/javascripts/runtime.js')
|
||||
style.
|
||||
.send_card { background-color: yellow; }
|
||||
.send_card_group { background-color: yellow; }
|
||||
.send_card_volunteer { background-color: yellow; }
|
||||
|
||||
.textarea_in_flex_one {
|
||||
padding-bottom: 15px;
|
||||
margin-left: 15px;
|
||||
margin-right: 15px;
|
||||
height: 100%;
|
||||
}
|
||||
@media only screen and (max-width: 768px) {
|
||||
.textarea_in_flex_one {
|
||||
height: 400px;
|
||||
}
|
||||
}
|
||||
|
||||
body
|
||||
#meldeweseninput.sidewideoverlay(style="z-index: 5;")
|
||||
.root
|
||||
.new_flex_zero
|
||||
+nav("PfarrInfoSystem", "meldeweseninput_menu")
|
||||
.container-fluid
|
||||
h1 Geburtstagskarten erstellen
|
||||
.small Adressen eingeben
|
||||
p Bitte kopieren Sie in das Textfeld unten alle Zeilen aus dem Meldewesen
|
||||
nav
|
||||
ul.pager
|
||||
li.previous
|
||||
span(onclick="$('#meldeweseninput').hide(); $('html, body').scrollTop(0);") Zurück
|
||||
li.next#button_proceed_meldeweseninput
|
||||
span(onclick="proceed_meldeweseninput();") Weiter
|
||||
div(style="flex: 1; display: flex;")
|
||||
.textarea_in_flex_one(style="flex: 1;")
|
||||
textarea#meldeweseninputpane(style="width: 100%; height: 100%; resize: none;", oninput="meldeweseninputpane_change();").
|
||||
!{data.meldeweseninput}
|
||||
|
||||
#meldewesenproceeded.sidewideoverlay(style="z-index: 10;")
|
||||
.root
|
||||
.new_flex_zero
|
||||
+nav("PfarrInfoSystem", "meldewesenproceeded_menu")
|
||||
.container-fluid
|
||||
h1 Geburtstagskarten erstellen
|
||||
.small Daten überprüfen, Auskunfssperren bearbeiten
|
||||
p Bitte überprüfen Sie unten stehende Daten und wählen Sie aus, welche Personen mit Auskunfssperre auch eine Karte erhalten sollen
|
||||
nav
|
||||
ul.pager
|
||||
li.previous
|
||||
span(onclick="$('#meldeweseninput').show(); $('#meldewesenproceeded').hide(); $('html, body').scrollTop(0);") Zurück
|
||||
li.next
|
||||
span(onclick="generate_cards();") Karten erstellen
|
||||
.new_flex_one
|
||||
.container-fluid
|
||||
#meldewesenproceededpane
|
||||
|
||||
#volunteergroupselector.sidewideoverlay(style="z-index: 5;")
|
||||
.root
|
||||
.new_flex_zero
|
||||
+nav("PfarrInfoSystem", "volunteergroupselector_menu")
|
||||
.container-fluid
|
||||
h1 Geburstagskarten erstellen
|
||||
.small Ehrenamtlichengruppen auswählen
|
||||
p Wählen Sie die Gruppen aus, die eine Karte bekommen sollen und bestimmen Sie, welche Personengruppen daraus eine Karte erhalten sollen
|
||||
nav
|
||||
ul.pager
|
||||
li.previous
|
||||
span(onclick="$('#volunteergroupselector').hide(); $('html, body').scrollTop(0);") Zurück
|
||||
li.next.disabled#button_volunteergroupsselected
|
||||
span(onclick="volunteergroupsselected();") Weiter
|
||||
.new_flex_one
|
||||
.container-fluid
|
||||
fieldset(style="margin-bottom: 20px;")
|
||||
legend(style="font-size: 120%; margin-bottom: 0px; color: orange;") Einstellungen
|
||||
div
|
||||
b Monat
|
||||
span
|
||||
.form-group
|
||||
.col-sm-2
|
||||
select(id='combo_month', class="form-control")
|
||||
option(value="1") Januar
|
||||
option(value="2") Februar
|
||||
option(value="3") März
|
||||
option(value="4") April
|
||||
option(value="5") Mai
|
||||
option(value="6") Juni
|
||||
option(value="7") Juli
|
||||
option(value="8") August
|
||||
option(value="9") September
|
||||
option(value="10") Oktober
|
||||
option(value="11") November
|
||||
option(value="12") Dezember
|
||||
.col-sm-1
|
||||
select(id="combo_year", class="form-control", style="min-width: 100px;")
|
||||
option(value="2015") 2015
|
||||
option(value="2016") 2016
|
||||
option(value="2017") 2017
|
||||
option(value="2018") 2018
|
||||
option(value="2019") 2019
|
||||
script.
|
||||
var d = new Date();
|
||||
var year = d.getFullYear();
|
||||
var month = d.getMonth()+2;
|
||||
if(month===13) {
|
||||
year++;
|
||||
month=1;
|
||||
}
|
||||
$("#combo_month").val(month);
|
||||
$("#combo_year").val(year);
|
||||
br
|
||||
div(style="margin-top: 7px;")
|
||||
label
|
||||
input(type="checkbox", id="cb_omitt_normal_birthdays", checked, style="vertical-align: sub;")
|
||||
span Schließe Geburtstagskinder aus, die eine normale Karte bekommen (würden)
|
||||
br
|
||||
label
|
||||
input(type="checkbox", id="cb_select_persons", style="vertical-align: sub;")
|
||||
span Wähle einzelne Personen aus
|
||||
#volunteergroupselector_groupslist
|
||||
#volunteerpersonsselector.sidewideoverlay(style="z-index: 10;")
|
||||
.root
|
||||
.new_flex_zero
|
||||
+nav("PfarrInfoSystem", "volunteerpersonsselector_menu")
|
||||
.container-fluid
|
||||
h1 Geburstagskarten erstellen
|
||||
.small Ehrenamtliche auswählen
|
||||
p Wählen Sie die Personen aus, die eine Karte bekommen sollen
|
||||
nav
|
||||
ul.pager
|
||||
li.previous
|
||||
span(onclick="$('#volunteerpersonsselector').hide(); $('html, body').scrollTop(0);") Zurück
|
||||
li.next.disabled#button_volunteerpersonsselected
|
||||
span(onclick="volunteerpersonsselected();") Weiter
|
||||
.new_flex_one
|
||||
.container-fluid
|
||||
#volunteerpersonsselector_volunteerslist
|
||||
|
||||
#cardspanel.sidewideoverlay(style="z-index: 15;")
|
||||
.root
|
||||
.new_flex_zero
|
||||
+nav("PfarrInfoSystem", "cardpanel_menu")
|
||||
.container-fluid
|
||||
h1 Geburtstagskarten erstellen
|
||||
.small Karten herunterladen
|
||||
p#cardspanel_downloadhint(style="display: none;") Sie können nun die erstellten Karten herunterladen
|
||||
nav
|
||||
ul.pager
|
||||
li.previous
|
||||
span#cardspanel_backbutton Zurück
|
||||
li.next.disabled
|
||||
span Weiter
|
||||
.new_flex_one
|
||||
.container-fluid
|
||||
a#cardspanel_link_cards(href="/birthdaycards/#{taskuuid}/download/cards.pdf", target="_blank", style="margin-right: 15px; display: none;")
|
||||
img(src="/images/mail-read-32.png", style="margin-right: 2px;")
|
||||
span Karten
|
||||
a#cardspanel_link_envelopes(href="/birthdaycards/#{taskuuid}/download/envelopes.pdf", target="_blank", style="margin-right: 15px; display: none;;")
|
||||
img(src="/images/mail-unread-32.png", style="margin-right: 2px;")
|
||||
span Umschläge
|
||||
.alert.alert-warning#cardspanel_nopersonsselectedwarning(style="display: none;")
|
||||
strong Achtung
|
||||
span
|
||||
span Es wurden keine Karten und Umschläge erstellt, weil keine Personen den Kriterien entsprachen!
|
||||
|
||||
.modal.fade(id="proceedMeldewesenInputDialog", role="dialog", aria-labelledby="proceedMeldewesenInputDialogLabel", aria-hidden="true")
|
||||
.modal-dialog(role="document")
|
||||
.modal-content
|
||||
.modal-header
|
||||
h4(class="modal-title", id="proceedMeldewesenInputDialogLabel") Meldewesendaten verarbeiten
|
||||
.modal-body
|
||||
p(style="font-weight: bold; font-style: italic;") Bitte warten Sie, während die Daten aus dem Meldewesen verarbeitet werden ...
|
||||
|
||||
.modal.fade(id="generateCardsDialog", role="dialog", aria-labelledby="generateCardsDialogLabel", aria-hidden="true")
|
||||
.modal-dialog(role="document")
|
||||
.modal-content
|
||||
.modal-header
|
||||
h4(class="modal-title", id="generateCardsDialogLabel") Geburtstagskarten und Kuverts erstellen
|
||||
.modal-body
|
||||
p(style="font-weight: bold; font-style: italic;") Bitte warten Sie, während Geburtstagskarten und Kuverts erstellt werden:
|
||||
|
||||
p(style="font-weigth: bold") Geburtstagskarten ...
|
||||
.progress
|
||||
#progress_cards.progress-bar(role="progressbar", aria-valuenow="0", aria-valuemin="0", aria-valuemax="100", style="width: 0%;")
|
||||
|
||||
p(style="font-weigth: bold") Umschläge ...
|
||||
.progress
|
||||
#progress_envelopes.progress-bar(role="progressbar", aria-valuenow="0", aria-valuemin="0", aria-valuemax="100", style="width: 0%;")
|
||||
|
||||
.root
|
||||
|
||||
.new_flex_zero
|
||||
+nav("PfarrInfoSystem", "mainmenu")
|
||||
.container-fluid
|
||||
h1 Geburtstagskarten erstellen
|
||||
.small Grundeinstellungen
|
||||
p Bitte wählen Sie Pfarrei, Adressatengruppe und Kartenformat aus
|
||||
nav
|
||||
ul.pager
|
||||
li.previous.disabled
|
||||
span Zurück
|
||||
li.next
|
||||
span(onclick="save_settings();") Weiter
|
||||
.new_flex_one
|
||||
.container-fluid
|
||||
+birthdaycards_settings(data.parishes, data.parishid, data.receivers, data.formats, data.formats_volunteers, data.formatid)
|
||||
|
||||
script.
|
||||
var ws = new PfISWebSocket("#{sessionuuid}", "#{taskuuid}");
|
||||
ws.bind_standard_close_handler();
|
||||
|
||||
var formats = !{formats_string};
|
||||
var formats_volunteers = !{formats_volunteers_string};
|
||||
|
||||
function update_formats() {
|
||||
var optionSelected = $("#combo_receivers").prop('selectedIndex');
|
||||
|
||||
$("#combo_format").empty();
|
||||
|
||||
var the_formats = (optionSelected === 0 ? formats : formats_volunteers);
|
||||
|
||||
for(idx = 0; idx < the_formats.length; ++idx) {
|
||||
var format = the_formats[idx];
|
||||
$("#combo_format").append($("<option></option>").text(format));
|
||||
}
|
||||
}
|
||||
|
||||
function save_settings() {
|
||||
var selectedParish = $("#combo_parish").prop('selectedIndex');
|
||||
var selectedReceivers = $("#combo_receivers").prop('selectedIndex');
|
||||
var selectedFormat = $("#combo_format").prop('selectedIndex');
|
||||
|
||||
ws.send('save_settings', {parishid: selectedParish, receivers: selectedReceivers, formatid: selectedFormat});
|
||||
}
|
||||
|
||||
ws.bind('save_settings_result', function(data) {
|
||||
if(data.receivers === 0) {
|
||||
$("#meldeweseninput").show();
|
||||
}
|
||||
else {
|
||||
var html = birthdaycards_volunteerslist_template(data);
|
||||
$("#volunteergroupselector_groupslist").empty();
|
||||
$("#volunteergroupselector_groupslist").html(html);
|
||||
$("#volunteergroupselector").show();
|
||||
$("#volunteergroupselector_groupslist").parent().parent().scrollTop(0);
|
||||
}
|
||||
|
||||
$('html, body').scrollTop(0);
|
||||
});
|
||||
|
||||
function meldeweseninputpane_change() {
|
||||
if($("#meldeweseninputpane").val()==="")
|
||||
$("#button_proceed_meldeweseninput").addClass('disabled');
|
||||
else
|
||||
$("#button_proceed_meldeweseninput").removeClass('disabled');
|
||||
}
|
||||
meldeweseninputpane_change();
|
||||
|
||||
function proceed_meldeweseninput() {
|
||||
if($("#button_proceed_meldeweseninput").hasClass("disabled"))
|
||||
return;
|
||||
|
||||
//$('#proceedMeldewesenInputDialog').modal('show');
|
||||
$('#proceedMeldewesenInputDialog').modal({
|
||||
backdrop: 'static',
|
||||
keyboard: false
|
||||
});
|
||||
ws.send('proceed_meldeweseninput', {input: $("#meldeweseninputpane").val()});
|
||||
}
|
||||
|
||||
ws.bind('proceed_meldeweseninput_result', function(data) {
|
||||
console.log(data);
|
||||
$('#proceedMeldewesenInputDialog').modal('hide');
|
||||
var html = birthdaycards_personview_template(data);
|
||||
$("#meldewesenproceededpane").empty();
|
||||
$("#meldewesenproceededpane").html(html);
|
||||
$("#meldewesenproceeded").show();
|
||||
$("#meldeweseninput").hide();
|
||||
$("#meldewesenproceededpane").parent().parent().scrollTop(0);
|
||||
$('html, body').scrollTop(0);
|
||||
});
|
||||
|
||||
function prepare_generate_cards() {
|
||||
$("#cardspanel_link_cards").hide();
|
||||
$("#cardspanel_link_envelopes").hide();
|
||||
$("#cardspanel_downloadhint").hide();
|
||||
$("#cardspanel_nopersonsselectedwarning").hide();
|
||||
$("#cardspanel").show();
|
||||
$('html, body').scrollTop(0);
|
||||
|
||||
$("#progress_envelopes").prop("aria-valuenow", 0);
|
||||
$("#progress_envelopes").css("width", "0%");
|
||||
$("#progress_envelopes").html("0%");
|
||||
//$("#generateCardsDialog").modal('show');
|
||||
$('#generateCardsDialog').modal({
|
||||
backdrop: 'static',
|
||||
keyboard: false
|
||||
});
|
||||
}
|
||||
|
||||
function cardspanel_go_back_to_meldewesenproceeded() {
|
||||
$('#meldewesenproceeded').show();
|
||||
$('#cardspanel').hide();
|
||||
$('#meldewesenproceededpane').parent().parent().scrollTop(0);
|
||||
$('html, body').scrollTop(0);
|
||||
}
|
||||
|
||||
function cardspanel_go_back_to_volunteergroupselector() {
|
||||
$('#volunteergroupselector').show();
|
||||
$('#cardspanel').hide();
|
||||
$('#volunteergroupselector_groupslist').parent().parent().scrollTop(0);
|
||||
$('html, body').scrollTop(0);
|
||||
}
|
||||
|
||||
function cardspanel_go_back_to_volunteerpersonsselector() {
|
||||
$('#volunteerpersonsselector').show();
|
||||
$('#cardspanel').hide();
|
||||
$('#volunteerpersonsselector_volunteerslist').parent().parent().scrollTop(0);
|
||||
$('html, body').scrollTop(0);
|
||||
}
|
||||
|
||||
function generate_cards() {
|
||||
$("#meldewesenproceeded").hide();
|
||||
prepare_generate_cards();
|
||||
|
||||
var send_cards_to_add = [];
|
||||
|
||||
$(".send_card").each(function(index) {
|
||||
send_cards_to_add.push($(this).prop('id'));
|
||||
});
|
||||
|
||||
console.log(send_cards_to_add);
|
||||
|
||||
$("#cardspanel_backbutton").off('click');
|
||||
$("#cardspanel_backbutton").on('click', cardspanel_go_back_to_meldewesenproceeded);
|
||||
|
||||
ws.send('generate_cards', {send_cards_to_add: send_cards_to_add});
|
||||
}
|
||||
|
||||
function update_button_volunteergroupsselected() {
|
||||
if($(".send_card_group").length > 0)
|
||||
$("#button_volunteergroupsselected").removeClass("disabled");
|
||||
else
|
||||
$("#button_volunteergroupsselected").addClass("disabled")
|
||||
}
|
||||
|
||||
function volunteergroupsselected() {
|
||||
if($("#button_volunteergroupsselected").hasClass("disabled"))
|
||||
return;
|
||||
|
||||
var send_cards_to = [];
|
||||
|
||||
$(".send_card_group").each(function(index) {
|
||||
send_cards_to.push($(this).data('dn'));
|
||||
});
|
||||
console.log(send_cards_to);
|
||||
|
||||
if($("#cb_select_persons").prop('checked'))
|
||||
ws.send('get_volunteers_for_selection', {volunteergroups: send_cards_to, month: $("#combo_month").val(), year: $("#combo_year").val(), omitt_normal_birthdays: $("#cb_omitt_normal_birthdays").prop('checked')});
|
||||
else {
|
||||
$("#volunteergroupselector").hide();
|
||||
prepare_generate_cards();
|
||||
|
||||
$("#cardspanel_backbutton").off('click');
|
||||
$("#cardspanel_backbutton").on('click', cardspanel_go_back_to_volunteergroupselector);
|
||||
|
||||
ws.send('generate_cards', {volunteergroups: send_cards_to, persons: [], month: $("#combo_month").val(), year: $("#combo_year").val(), omitt_normal_birthdays: $("#cb_omitt_normal_birthdays").prop('checked')});
|
||||
}
|
||||
}
|
||||
|
||||
function update_button_volunteerpersonsselected() {
|
||||
if($(".send_card_volunteer").length > 0) {
|
||||
$("#button_volunteerpersonsselected").removeClass("disabled");
|
||||
$("#button_volunteerpersonsselected").prop("disabled", false);
|
||||
}
|
||||
else {
|
||||
$("#button_volunteerpersonsselected").addClass("disabled");
|
||||
$("#button_volunteerpersonsselected").prop("disabled", true);
|
||||
}
|
||||
}
|
||||
|
||||
ws.bind('get_volunteers_for_selection_result', function(data) {
|
||||
var html = birthdaycards_volunteerspersonslist_template(data);
|
||||
$("#volunteerpersonsselector_volunteerslist").empty();
|
||||
$("#volunteerpersonsselector_volunteerslist").html(html);
|
||||
$("#volunteerpersonsselector").show();
|
||||
$("#volunteerpersonsselector_volunteerslist").parent().parent().scrollTop(0);
|
||||
|
||||
$('html, body').scrollTop(0);
|
||||
})
|
||||
|
||||
function volunteerpersonsselected() {
|
||||
if($("#button_volunteerpersonsselected").hasClass("disabled"))
|
||||
return;
|
||||
|
||||
$("#volunteerpersonsselector").hide();
|
||||
prepare_generate_cards();
|
||||
|
||||
$("#cardspanel_backbutton").off('click');
|
||||
$("#cardspanel_backbutton").on('click', cardspanel_go_back_to_volunteerpersonsselector);
|
||||
|
||||
var persons = [];
|
||||
|
||||
$(".send_card_volunteer").each(function(index) {
|
||||
persons.push($(this).data('dn'));
|
||||
});
|
||||
|
||||
ws.send('generate_cards', {persons: persons});
|
||||
}
|
||||
|
||||
ws.bind('generate_cards_progress', function(data) {
|
||||
console.log(data);
|
||||
var percent = Math.round(data.generated * 100 / data.total) ;
|
||||
console.log(percent);
|
||||
switch(data.step) {
|
||||
case 'cards':
|
||||
$("#progress_cards").prop("aria-valuenow", percent);
|
||||
$("#progress_cards").css("width", percent +"%");
|
||||
$("#progress_cards").html(percent +"%");
|
||||
break;
|
||||
case 'envelopes':
|
||||
$("#progress_envelopes").prop("aria-valuenow", percent);
|
||||
$("#progress_envelopes").css("width", percent +"%");
|
||||
$("#progress_envelopes").html(percent +"%");
|
||||
break;
|
||||
};
|
||||
});
|
||||
|
||||
ws.bind('generate_cards_result', function(data) {
|
||||
console.log('generate_cards_result');
|
||||
$("#generateCardsDialog").modal('hide');
|
||||
if(data.number_of_cards > 0) {
|
||||
$("#cardspanel_downloadhint").show();
|
||||
$("#cardspanel_link_cards").show();
|
||||
$("#cardspanel_link_envelopes").show();
|
||||
}
|
||||
else
|
||||
$("#cardspanel_nopersonsselectedwarning").show();
|
||||
});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
include mixins_birthdaycards
|
||||
|
||||
+birthdaycards_persons(omitted_lines, persons, persons_with_information_lock, persons_omitted)
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
fieldset(style="margin-bottom: 20px;")
|
||||
legend(style="font-size: 120%; margin-bottom: 0px; color: orange;") Ehrenamtlichengruppen
|
||||
p Wählen Sie die Gruppen aus, die eine Karte bekommen sollen!
|
||||
button.btn.btn-primary.btn-xs(onclick="$('[data-group]').addClass('send_card_group'); update_button_volunteergroupsselected();") Alle auswählen
|
||||
button.btn.btn-default.btn-xs(onclick="$('[data-group]').removeClass('send_card_group'); update_button_volunteergroupsselected();") Alle abwählen
|
||||
table(width='100%', class='table table-condensed', style='margin-bottom: 10px;')
|
||||
thead
|
||||
tr
|
||||
td <b>Name</b>
|
||||
tbody
|
||||
for grp in volunteergroups
|
||||
tr(onclick="$(this).toggleClass('send_card_group'); update_button_volunteergroupsselected();", style="cursor: pointer;", data-dn="#{grp.dn}", data-group)
|
||||
td #{grp.name}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
if persons.lenght === 0
|
||||
.alert.alert-warning
|
||||
strong Achtung
|
||||
span
|
||||
span Es wurden keine Personen, die die Kriterien erfüllen würden, gefunden!
|
||||
else
|
||||
fieldset(style="margin-bottom: 20px;")
|
||||
legend(style="font-size: 120%; margin-bottom: 0px; color: orange;") Ehrenamtliche Geburtstagskinder
|
||||
button.btn.btn-primary.btn-xs(onclick="$('[data-volunteer]').addClass('send_card_volunteer'); update_button_volunteerpersonsselected();") Alle auswählen
|
||||
button.btn.btn-default.btn-xs(onclick="$('[data-volunteer]').removeClass('send_card_volunteer'); update_button_volunteerpersonsselected();") Alle abwählen
|
||||
table(width='100%', class='table table-condensed', style='margin-bottom: 10px;')
|
||||
thead
|
||||
tr
|
||||
td(style="width: 50%;") <b>Name</b>
|
||||
td <b>Geburtstag</b>
|
||||
td <b>Alter</b>
|
||||
tbody
|
||||
for p in persons
|
||||
tr(onclick="$(this).toggleClass('send_card_volunteer'); update_button_volunteerpersonsselected();", style="cursor: pointer;", data-dn="#{p.dn}", data-volunteer)
|
||||
td #{p.name}
|
||||
td #{p.birthday}
|
||||
td #{p.age}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
include mixins
|
||||
|
||||
doctype html
|
||||
html
|
||||
include header
|
||||
link(href="/stylesheets/bootstrap-datepicker.min.css", rel="stylesheet")
|
||||
script(src='/javascripts/bootstrap-datepicker.min.js' )
|
||||
script(src='/javascripts/bootstrap-datepicker.de.min.js' )
|
||||
body(style="overflow: hidden;")
|
||||
|
||||
|
||||
.container-horizontal(style="overflow: hidden;")
|
||||
|
||||
.flex-one(style="overflow: hidden; height: 100%;")
|
||||
|
||||
.container-vertical
|
||||
|
||||
.flex-zero
|
||||
+nav("PfarrInfoSystem", "dropdown_menu")
|
||||
|
||||
.container-fluid
|
||||
+messageview(messages)
|
||||
|
||||
button(class="btn btn-success btn-xs", type="button", id="change_date", onclick='location.assign("/#{pcalview}/#{date}");')
|
||||
span(class="glyphicon glyphicon-ok", aria-hidden="true")
|
||||
span
|
||||
span Übernehmen
|
||||
|
||||
//- http://eternicode.github.io/bootstrap-datepicker/
|
||||
#datepicker(data-date=date)
|
||||
|
||||
script.
|
||||
$('#datepicker').datepicker({format: "yyyy-mm-dd", language: "de", calendarWeeks: true, todayHighlight: true});
|
||||
$("#datepicker").on("changeDate", function(event) {
|
||||
var d = $("#datepicker").datepicker('getFormattedDate');
|
||||
console.log(d);
|
||||
|
||||
$("#change_date").attr("onclick",'location.assign("/#{pcalview}/'+d+'");');
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,507 @@
|
|||
include mixins
|
||||
include mixins_day
|
||||
|
||||
doctype html
|
||||
html(lang="de", xml:lang="de", xmlns="http://www.w3.org/1999/xhtml")
|
||||
include header
|
||||
script(src='/javascripts/pfiswebsocket.js')
|
||||
script(src='/templates/daycontent.js')
|
||||
script(src='/templates/timelinecontent.js')
|
||||
script(src='/templates/timeline_eventdetails.js')
|
||||
script(src='/templates/pastoralteamcontent.js')
|
||||
script(src='/templates/pfarreientimelinecontent.js')
|
||||
script(src='/templates/errorview_inlay.js')
|
||||
script(src='/templates/pcal/pentry_clone_move.js')
|
||||
script(src='/templates/pcal/pentry_clone_move_parishday.js')
|
||||
script(src='/javascripts/pcal_pentry_clone_move_manager.js')
|
||||
script(src='/templates/pcal/pentry_edit.js')
|
||||
script(src='/templates/pcal/edit_event.js')
|
||||
script(src='/templates/pcal/edit_away.js')
|
||||
script(src='/templates/pcal/edit_todo.js')
|
||||
script(src='/templates/pcal/edit_keep_in_mind.js')
|
||||
script(src='/templates/pcal/edit_vehicle_use.js')
|
||||
script(src='/templates/actorselector_inlay.js')
|
||||
script(src='/templates/pastoralunitselector_inlay.js')
|
||||
script(src='/templates/locationselector_inlay.js')
|
||||
script(src='/templates/locationeditor_inlay.js')
|
||||
script(src='/templates/roleeditor_inlay.js')
|
||||
script(src='/templates/involvededitor_inlay.js')
|
||||
script(src='/templates/messageview_inlay.js')
|
||||
script(src='/templates/parishdbpersongroupselector_inlay.js')
|
||||
script(src='/javascripts/pcal_pentry_edit_manager.js')
|
||||
script(src="/javascripts/typeahead.jquery.min.js")
|
||||
link(href="/stylesheets/mytypeahead.css", rel="stylesheet")
|
||||
script(src="/javascripts/validator.min.js")
|
||||
script(src='/javascripts/runtime.js')
|
||||
link(href="/stylesheets/bootstrap-datepicker.min.css", rel="stylesheet")
|
||||
script(src='/javascripts/bootstrap-datepicker.min.js' )
|
||||
script(src='/javascripts/bootstrap-datepicker.de.min.js' )
|
||||
link(href="/stylesheets/style_day.css", rel="stylesheet")
|
||||
link(href="/stylesheets/style_week.css", rel="stylesheet")
|
||||
style.
|
||||
.block-relative { position: relative; width: 100%; }
|
||||
.block-absolute { position: absolute; padding-left: 2px; padding-right: 2px; padding-bottom: 2px;}
|
||||
.timepoint { font-size: 80%; position: absolute; border-top-style: dotted; border-top-width: 1px; border-top-color: grey; right: -15px; left: -15px; z-index: -5; }
|
||||
|
||||
/* for pentry_clone_move */
|
||||
.cell_element { display: table-cell; }
|
||||
.td_new_celebration { padding-top: 10px; }
|
||||
.give_margin_left { padding-left: 10px; }
|
||||
@media only screen and (max-width: 768px) {
|
||||
.cell_element {
|
||||
display: block;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.td_new_celebration { padding-top: 0px; }
|
||||
.give_margin_left { padding-left: 0px; }
|
||||
}
|
||||
|
||||
/* for pentry_edit */
|
||||
.panel { margin-bottom: 5px; }
|
||||
.panel-title { cursor: pointer; }
|
||||
//- .panel_group_and_unit { border-width: 3px; }
|
||||
|
||||
/* The sticky class is added to the header with JS when it reaches its scroll position */
|
||||
.sticky {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
body
|
||||
script.
|
||||
console.log(history.state);
|
||||
|
||||
if(history.state === null || typeof history.state.direction === 'undefined')
|
||||
{
|
||||
history.replaceState({direction: 'back'}, document.title, "/#{viewformat}/#{date.date}?back=false");
|
||||
history.pushState({direction: 'mainpage', date: "#{date.date}", scrollto: ''}, document.title, "/#{viewformat}/#{date.date}");
|
||||
}
|
||||
else
|
||||
console.log(history.state.direction);
|
||||
|
||||
|
||||
.modal.fade(id="daypickerDialog", role="dialog", aria-labelledby="daypickerDialogLabel", aria-hidden="true")
|
||||
.modal-dialog(role="document")
|
||||
.modal-content
|
||||
.modal-header
|
||||
button(type="button", class="close", data-dismiss="modal", aria-hidden="true") ×
|
||||
h4(class="modal-title" id="daypickerDialogLabel") Datum anspringen
|
||||
.modal-body
|
||||
#datepicker()
|
||||
.modal-footer
|
||||
button(type="button", class="btn btn-default", data-dismiss="modal") Abbrechen
|
||||
button(type="button", class="btn btn-success", id="confirm") Anspringen
|
||||
|
||||
+standard_delete_dialog("confirmDelete")
|
||||
|
||||
#pentry_clone_move_parent.sidewideoverlay(style="z-index: 5;")
|
||||
|
||||
#pentry_edit_parent.sidewideoverlay(style="z-index: 5;")
|
||||
|
||||
#daymainview.root
|
||||
|
||||
.new_flex_zero
|
||||
+nav_main_primary(viewformat, date.date)
|
||||
|
||||
#dataparent.subroot.full_height(style="margin-top: 5px;")
|
||||
if viewformat == "timeline"
|
||||
+timeline(date, litinfo, last_week, yesterday, tomorrow, next_week, parishcal, messages)
|
||||
else if viewformat == "pastoralteam"
|
||||
+pastoralteam(date, litinfo, last_week, yesterday, tomorrow, next_week, parishcal, messages)
|
||||
else if viewformat == "pfarreientimeline"
|
||||
+pfarreientimeline(date, litinfo, last_week, yesterday, tomorrow, next_week, parishcal, messages)
|
||||
else
|
||||
+daycontent(date, litinfo, last_week, yesterday, tomorrow, next_week, parishcal, messages)
|
||||
|
||||
- var d = JSON.stringify(date);
|
||||
|
||||
script.
|
||||
var ws;
|
||||
var viewformat = "#{viewformat}";
|
||||
|
||||
var pcal_pentry_clone_move_manager;
|
||||
var pcal_pentry_edit_manager;
|
||||
|
||||
var saved_messages = [];
|
||||
|
||||
$(document).ready(function() {
|
||||
ws = new PfISWebSocket("#{sessionuuid}");
|
||||
ws.bind_standard_close_handler();
|
||||
|
||||
|
||||
pcal_pentry_clone_move_manager = new pcalPentryCloneMoveManager(ws, "#{viewformat}");
|
||||
pcal_pentry_clone_move_manager.set_date(!{d});
|
||||
|
||||
pcal_pentry_edit_manager = new pcalPentryEditManager(ws);
|
||||
pcal_pentry_edit_manager.set_date(!{d});
|
||||
|
||||
/*if("#{event}" !== "") {
|
||||
ws.bind('open', function() {day_show_event("#{date.date}", "#{event}");});
|
||||
}*/
|
||||
|
||||
|
||||
ws.bind('get_parishday_result', function(data){
|
||||
var scrollto = '';
|
||||
if(history.state && history.state.scrollto)
|
||||
scrollto = history.state.scrollto;
|
||||
// console.log('scrollto:', scrollto);
|
||||
|
||||
// history.replaceState({direction: 'back'}, document.title, '/'+ viewformat + '/' + data.date.date + '?back=false');
|
||||
if(history.state && history.state.date && history.state.date === data.date.date && history.state.direction === "mainpage")
|
||||
{
|
||||
console.log('NO new entry in history created')
|
||||
}
|
||||
else {
|
||||
history.pushState({direction: 'mainpage', date: data.date.date }, document.title, '/'+ viewformat + '/' + data.date.date) ;
|
||||
console.log('new entry in history created')
|
||||
}
|
||||
|
||||
update_navlinks(data.date.date); // navlinks include the current date, so they must always be updated!
|
||||
|
||||
var html;
|
||||
switch(viewformat) {
|
||||
case "timeline" : html = timelinecontent_template(data); break;
|
||||
case "pastoralteam" : html = pastoralteamcontent_template(data); break;
|
||||
case "pfarreientimeline" : html = pfarreientimelinecontent_template(data); break;
|
||||
default : html = daycontent_template(data); break;
|
||||
}
|
||||
$('#dataparent').html(html);
|
||||
|
||||
for(midx in saved_messages)
|
||||
$('#daycontrol_parent').append(saved_messages[midx]);
|
||||
saved_messages = [];
|
||||
|
||||
if((viewformat === "timeline" || viewformat === "pastoralteam" || viewformat === "pfarreientimeline") && scrollto !== '') {
|
||||
var the_elem = $("[data-event-uuid='" + scrollto + "']");
|
||||
// this event (the_elem) might have been deleted!!!
|
||||
if(the_elem.length > 0) {
|
||||
$('#timelinebody').parent().parent().animate({
|
||||
scrollTop: the_elem.offset().top - $("#timelinebody").offset().top
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
pcal_pentry_clone_move_manager.set_date(data.date);
|
||||
pcal_pentry_edit_manager.set_date(data.date);
|
||||
|
||||
//console.log("FINISHED REDRAW", new Date());
|
||||
});
|
||||
|
||||
ws.bind('event_details_result', function(data) {
|
||||
console.log('event_details_result');
|
||||
|
||||
if(data.result === "OK") {
|
||||
if(history.state.direction !== 'day_show_event')
|
||||
if(history.state.direction === 'day_show_event_after_edit')
|
||||
history.replaceState({direction: 'day_show_event', event_uuid: data.event.uuid, date: data.date.date}, document.title, location.pathname /* + '/' + data.event.uuid*/);
|
||||
else
|
||||
history.pushState({direction: 'day_show_event', event_uuid: data.event.uuid, date: data.date.date}, document.title, location.pathname /* + '/' + data.event.uuid*/);
|
||||
var html = timeline_eventdetails_template({date : data.date, litinfo: data.litinfo, event: data.event, pcalview: viewformat} );
|
||||
$('#dataparent').html(html);
|
||||
}
|
||||
else {
|
||||
if(history.state.direction !== 'day_show_event')
|
||||
history.pushState({direction: 'day_show_event', event_uuid: 'invalid', date: data.date.date}, document.title, location.pathname);
|
||||
else
|
||||
history.replaceState({direction: 'day_show_event', event_uuid: 'invalid', date: data.date.date}, document.title, location.pathname);
|
||||
var html = errorview_inlay_template({ messages: data.messages, is_error: true, session_ended: false});
|
||||
$('#dataparent').html(html);
|
||||
}
|
||||
});
|
||||
|
||||
ws.bind('pentry_delete_result', function(data) {
|
||||
console.log("pentry_delete_result");
|
||||
console.log(data);
|
||||
|
||||
var message = errorview_inlay_template({ messages: data.messages, is_error: (data.result === 'OK' ? false : true), session_ended: false});
|
||||
|
||||
if(data.pentrytype !== 'event') {
|
||||
if(data.result === 'OK') {
|
||||
var button = $('[data-pentry-uuid="'+ data.uuid + '"]');
|
||||
var type = data.pentrytype;
|
||||
var box = button.closest('.' + type);
|
||||
box.remove();
|
||||
}
|
||||
|
||||
$('#daycontrol_parent').append(message);
|
||||
}
|
||||
else {
|
||||
saved_messages.push(message);
|
||||
history.back();
|
||||
}
|
||||
|
||||
$('#confirmDelete').modal('hide');
|
||||
});
|
||||
|
||||
ws.bind('tevent_delete_result', function(data) {
|
||||
console.log(data);
|
||||
|
||||
if(data.result === "OK") {
|
||||
|
||||
var delete_button = $('[data-event-uuid="'+ data.event + '"][data-tevent-uuid="'+ data.tevent + '"]');
|
||||
|
||||
console.log(delete_button);
|
||||
|
||||
var eventbox = delete_button.closest('.eventbox');
|
||||
var number_of_children = eventbox.parent().children().length;
|
||||
|
||||
console.log('number_of_children: ', number_of_children);
|
||||
|
||||
if(number_of_children > 1) {
|
||||
if(eventbox.is(':first-child')) { // disable up-button
|
||||
$(eventbox.next().find("div > button:nth-child(2)")[0]).prop('disabled', true);
|
||||
}
|
||||
if(eventbox.is(':last-child')) { // disable down-ubtton
|
||||
$(eventbox.prev().find("div > button:nth-child(3)")[0]).prop('disabled', true);
|
||||
}
|
||||
}
|
||||
|
||||
eventbox.remove();
|
||||
}
|
||||
else
|
||||
console.log('tevent_delete_result: ', data);
|
||||
|
||||
$('#confirmDelete').modal('hide');
|
||||
});
|
||||
|
||||
function adjust_updown_buttons(teventbox) {
|
||||
if(teventbox.is(':first-child'))
|
||||
{
|
||||
$(teventbox.find("div > button:nth-child(2)")[0]).prop('disabled', true);
|
||||
$(teventbox.find("div > button:nth-child(3)")[0]).prop('disabled', false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(teventbox.is(':last-child'))
|
||||
{
|
||||
$(teventbox.find("div > button:nth-child(2)")[0]).prop('disabled', false);
|
||||
$(teventbox.find("div > button:nth-child(3)")[0]).prop('disabled', true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$(teventbox.find("div > button:nth-child(2)")[0]).prop('disabled', false);
|
||||
$(teventbox.find("div > button:nth-child(3)")[0]).prop('disabled', false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ws.bind('tevent_move_updown_result',function(data){
|
||||
console.log(data);
|
||||
|
||||
// via the delete_button we can get the eventbox!
|
||||
var delete_button = $('[data-event-uuid="'+ data.event + '"][data-tevent-uuid="'+ data.tevent + '"]');
|
||||
var eventbox = delete_button.closest('.eventbox');
|
||||
var other = {};
|
||||
/* http://stackoverflow.com/questions/3050830/reorder-list-elements-jquery */
|
||||
if(data.updown === "down")
|
||||
{
|
||||
next = eventbox.next();
|
||||
next.after(eventbox);
|
||||
other = next;
|
||||
}
|
||||
else /* up */
|
||||
{
|
||||
prev = eventbox.prev();
|
||||
prev.before(eventbox);
|
||||
other = prev;
|
||||
}
|
||||
adjust_updown_buttons(eventbox);
|
||||
adjust_updown_buttons(other);
|
||||
|
||||
/* $('body').loading('stop'); */
|
||||
});
|
||||
|
||||
if(history.state.direction === 'day_show_event' && history.state.event_uuid != 'invalid')
|
||||
{
|
||||
ws.bind('open', function() {day_show_event("#{date.date}", history.state.event_uuid)});
|
||||
}
|
||||
else if(history.state.direction === 'clone_move')
|
||||
{
|
||||
ws.bind('open', function() {pcal_pentry_clone_move_manager.start(history.state.pentrytype, history.state.uuid, history.state.clone_or_move);});
|
||||
}
|
||||
else if(history.state.direction.substr(0,12) === 'pentry_edit_')
|
||||
{
|
||||
ws.bind('open', function() {pcal_pentry_edit_manager.start(history.state.pentrytype, history.state.uuid);});
|
||||
}
|
||||
|
||||
if("#{scrollto}" !== "") {
|
||||
$('#timelinebody').animate({
|
||||
scrollTop: $("[data-event-uuid='#{scrollto}']").offset().top - $("#timelinebody").offset().top
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function set_viewformat(format, new_date) {
|
||||
viewformat = format;
|
||||
day_goto(new_date);
|
||||
}
|
||||
|
||||
function update_navlinks(new_date) {
|
||||
var day_elem = $('.navbar-collapse > ul > li:nth(0) > a');
|
||||
var tml_elem = $('.navbar-collapse > ul > li:nth(1) > a');
|
||||
var pt_elem = $('.navbar-collapse > ul > li:nth(2) > a');
|
||||
var pfrtl_elem = $('.navbar-collapse > ul > li:nth(3) > a');
|
||||
|
||||
var week_elem = $('.navbar-collapse > ul > li:nth(4) > a');
|
||||
week_elem.prop('href', '/week/' + new_date);
|
||||
var select_for_view_elem = $('#select_punits_for_view').closest('a');
|
||||
select_for_view_elem.prop("href", "/"+ viewformat +"/"+new_date+"/select_punits_for_view");
|
||||
var parishcalA4week_elem = $('#parishcalA4week').closest('a');
|
||||
parishcalA4week_elem.prop("href", "/parishcalA4week/" + new_date);
|
||||
|
||||
switch(viewformat) {
|
||||
case "timeline":
|
||||
day_elem.prop("href", "javascript: set_viewformat('day', '" + new_date + "');");
|
||||
day_elem.parent().removeClass("active");
|
||||
pt_elem.prop("href", "javascript: set_viewformat('pastoralteam', '" + new_date + "');");
|
||||
pt_elem.parent().removeClass("active");
|
||||
pfrtl_elem.prop("href", "javascript: set_viewformat('pfarreientimeline', '" + new_date + "');");
|
||||
pfrtl_elem.parent().removeClass("active");
|
||||
tml_elem.prop("href", "#");
|
||||
tml_elem.parent().addClass("active");
|
||||
break;
|
||||
case "pastoralteam":
|
||||
day_elem.prop("href", "javascript: set_viewformat('day', '" + new_date + "');");
|
||||
day_elem.parent().removeClass("active");
|
||||
tml_elem.prop("href", "javascript: set_viewformat('timeline', '" + new_date + "');");
|
||||
tml_elem.parent().removeClass("active");
|
||||
pfrtl_elem.prop("href", "javascript: set_viewformat('pfarreientimeline', '" + new_date + "');");
|
||||
pfrtl_elem.parent().removeClass("active");
|
||||
pt_elem.prop("href", "#");
|
||||
pt_elem.parent().addClass("active");
|
||||
break;
|
||||
case "pfarreientimeline":
|
||||
day_elem.prop("href", "javascript: set_viewformat('day', '" + new_date + "');");
|
||||
day_elem.parent().removeClass("active");
|
||||
tml_elem.prop("href", "javascript: set_viewformat('timeline', '" + new_date + "');");
|
||||
tml_elem.parent().removeClass("active");
|
||||
pfrtl_elem.prop("href", "#");
|
||||
pfrtl_elem.parent().addClass("active");
|
||||
pt_elem.prop("href", "javascript: set_viewformat('pastoralteam', '" + new_date + "');");
|
||||
pt_elem.parent().removeClass("active");
|
||||
break;
|
||||
default:
|
||||
day_elem.prop("href", "#");
|
||||
day_elem.parent().addClass("active");
|
||||
tml_elem.prop("href", "javascript: set_viewformat('timeline', '" + new_date + "');");
|
||||
tml_elem.parent().removeClass("active");
|
||||
pt_elem.prop("href", "javascript: set_viewformat('pastoralteam', '" + new_date + "');");
|
||||
pt_elem.parent().removeClass("active");
|
||||
pfrtl_elem.prop("href", "javascript: set_viewformat('pfarreientimeline', '" + new_date + "');");
|
||||
pfrtl_elem.parent().removeClass("active");
|
||||
}
|
||||
|
||||
//console.log("UPDATED NAVLINKS", new Date());
|
||||
}
|
||||
|
||||
function day_goto(new_date) {
|
||||
ws.send('get_parishday', {format : viewformat, date : new_date});
|
||||
}
|
||||
|
||||
function day_show_event(date, event) {
|
||||
//console.log('day_show_event', date, event);
|
||||
history.replaceState({direction: 'mainpage', date: date, scrollto: event }, document.title, "/" + viewformat + "/" + date) ;
|
||||
//console.log(ws);
|
||||
ws.send('event_details', { date: date, event: event});
|
||||
}
|
||||
|
||||
$('#datepicker').datepicker({format: "yyyy-mm-dd", language: "de", calendarWeeks: true, todayHighlight: true});
|
||||
|
||||
$('#daypickerDialog').on('show.bs.modal', function (e) {
|
||||
date = $(e.relatedTarget).attr('data-date');
|
||||
$('#datepicker').datepicker("update", date);
|
||||
});
|
||||
|
||||
$('#daypickerDialog').find('.modal-footer #confirm').on('click', function() {
|
||||
$('#daypickerDialog').modal('hide');
|
||||
//console.log('CLICKED');
|
||||
day_goto($("#datepicker").datepicker('getFormattedDate'));
|
||||
});
|
||||
|
||||
function toggle_pentrydetails_visibility(pentry) {
|
||||
$(pentry).find(".pentry_details").toggle();
|
||||
}
|
||||
|
||||
$('#confirmDelete').on('show.bs.modal', function (e) {
|
||||
if(pcal_pentry_edit_manager.is_active()) {
|
||||
pcal_pentry_edit_manager.deletedialog_handle_show($(this), e);
|
||||
return;
|
||||
}
|
||||
|
||||
$etitle = $(e.relatedTarget).attr('data-pentry-title');
|
||||
$(this).find('.modal-body p').text("Sind Sie sicher, dass Sie " + $etitle + " löschen wollen?");
|
||||
|
||||
$(this).find('.modal-footer #confirm').data('button', $(e.relatedTarget));
|
||||
});
|
||||
|
||||
$('#confirmDelete').find('.modal-footer #confirm').on('click', function() {
|
||||
if(pcal_pentry_edit_manager.is_active()) {
|
||||
pcal_pentry_edit_manager.deletedialog_handle_confirm($(this));
|
||||
return;
|
||||
}
|
||||
|
||||
var delete_button = $(this).data('button');
|
||||
|
||||
var date = delete_button.data('date');
|
||||
var type = delete_button.data('pentry-type');
|
||||
|
||||
if(type === "tevent") {
|
||||
console.log('delete tevent');
|
||||
var event = delete_button.data('event-uuid');
|
||||
var tevent = delete_button.data('tevent-uuid');
|
||||
|
||||
console.log(date, event, tevent);
|
||||
|
||||
ws.send('tevent_delete', { date: date, event: event, thereafter: tevent });
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var uuid = delete_button.data('pentry-uuid');
|
||||
|
||||
console.log(date, type, uuid);
|
||||
|
||||
ws.send('pentry_delete', { date: date, pentrytype: type, uuid: uuid });
|
||||
});
|
||||
|
||||
do_tevent_move_updown = function(button, date, event, tevent, updown) {
|
||||
ws.send('tevent_move_updown', { date: date, event: event, thereafter: tevent, updown: updown });
|
||||
}
|
||||
|
||||
window.addEventListener("popstate", function(e) {
|
||||
console.log(e.state);
|
||||
if(e.state !== null) {
|
||||
if(e.state.direction === "back") {
|
||||
history.go(1);
|
||||
return;
|
||||
}
|
||||
if(e.state.direction === "mainpage"){
|
||||
// clone_move/edit _manager is active if user clicked on back-button in browser; handle this here:
|
||||
if(pcal_pentry_clone_move_manager.is_active())
|
||||
pcal_pentry_clone_move_manager.finish();
|
||||
if(pcal_pentry_edit_manager.is_active())
|
||||
pcal_pentry_edit_manager.finish();
|
||||
|
||||
day_goto(e.state.date);
|
||||
return;
|
||||
}
|
||||
if(e.state.direction === "pentry_edit_main" && pcal_pentry_edit_manager.is_active())
|
||||
{
|
||||
pcal_pentry_edit_manager.show_edit_main();
|
||||
return;
|
||||
}
|
||||
if(e.state.direction.substr(0, 12) === "pentry_edit_")
|
||||
{
|
||||
history.go(-1);
|
||||
}
|
||||
if(e.state.direction === "day_show_event_after_edit")
|
||||
{
|
||||
pcal_pentry_edit_manager.finish();
|
||||
}
|
||||
|
||||
history.replaceState({direction: "mainpage", date: e.state.date}, document.title)
|
||||
day_goto(e.state.date);
|
||||
}
|
||||
}, false);
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
include mixins
|
||||
include mixins_day
|
||||
|
||||
+daycontent(date, litinfo, last_week, yesterday, tomorrow, next_week, parishcal, messages)
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
include mixins
|
||||
|
||||
form(class="form-horizontal subroot", role="form", id="form", method="POST", action="#{away_href}/commit")
|
||||
.new_flex_zero
|
||||
.container-fluid(style="margin-bottom: 20px;")
|
||||
button(class="btn btn-success btn-sm", type="submit")
|
||||
span(class="glyphicon glyphicon-ok", aria-hidden="true")
|
||||
span
|
||||
span Übernehmen
|
||||
|
||||
+messageview(messages.other)
|
||||
|
||||
.new_flex_one
|
||||
.container-fluid
|
||||
|
||||
.form-group
|
||||
label(for='edit_kontext', class="col-sm-2 control-label") Kontext
|
||||
.col-sm-10
|
||||
.input-group
|
||||
input(id="edit_kontext_dn", type="hidden", name="punit_dn", value="#{away.punit.dn}")
|
||||
input(id="edit_kontext", type="text", name="punit_name", class="form-control", value="#{away.punit.name}", readonly)
|
||||
span(class="input-group-btn")
|
||||
button(class="btn btn-default", type="button", onclick="save_and_goto('select_pastoralunit', {})") Ändern
|
||||
|
||||
.form-group
|
||||
label(for='edit_name', class="col-sm-2 control-label") Abwesende Person
|
||||
.col-sm-10
|
||||
.input-group
|
||||
input(id="edit_involveddb_id", type="hidden", name="involveddb_id", value="#{away.involveddb_id}")
|
||||
input(id="edit_name", type="text", name="edit_name", class="form-control noDirectInput", value="#{away.name}", required)
|
||||
span(class="input-group-btn")
|
||||
button(class="btn btn-default", type="button", onclick="save_and_goto('add_actor', {role: '', actual_actor_id: '#{away.involveddb_id}', actual_actor_name : '#{away.name}'})") Ändern
|
||||
.help-block.with-errors
|
||||
#messageview_involved_primary
|
||||
if messages.involved.primary.length > 0
|
||||
+messageview(messages.involved.primary)
|
||||
|
||||
.form-group
|
||||
label(for='edit_reason', class="col-sm-2 control-label") Grund
|
||||
.col-sm-10
|
||||
input(id='edit_reason', type="text", class="form-control noEnterSubmit", name="edit_reason", value="#{away.reason}", required)
|
||||
.help-block.with-errors
|
||||
|
||||
|
||||
script.
|
||||
$('.noEnterSubmit').keydown(function(e){
|
||||
if ( e.which == 13 ) e.preventDefault();
|
||||
});
|
||||
|
||||
$('.noDirectInput').keydown(function(e) {
|
||||
var target = $(e.currentTarget);
|
||||
var form_group = target.closest('.form-group');
|
||||
var help_block = form_group.find('.with-errors');
|
||||
if(! form_group.hasClass('has-error'))
|
||||
{
|
||||
target.closest('.form-group').addClass('has-error');
|
||||
}
|
||||
if(! help_block.hasClass('has-halieus-error')) {
|
||||
help_block.addClass('has-halieus-error');
|
||||
help_block.append("<ul class='list-unstyled'><li>Sie müssen den 'Ändern'-Button benutzen!</li></ul>");
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
});
|
||||
$('.noDirectInput').keyup(function(e) { e.preventDefault(); });
|
||||
$('.noDirectInput').keypress(function(e) { e.preventDefault(); });
|
||||
|
||||
$('.noDirectInput').focusout(function(e) {
|
||||
var target = $(e.currentTarget);
|
||||
var form_group = target.closest('.form-group');
|
||||
var help_block = form_group.find('.with-errors');
|
||||
help_block.empty();
|
||||
help_block.removeClass('has-halieus-error');
|
||||
});
|
||||
|
||||
$('#form').validator().on('invalid.bs.validator', function (e) {
|
||||
console.log("INVALID");
|
||||
console.log(e);
|
||||
}).on('valid.bs.validator', function (e) {
|
||||
console.log("VALID");
|
||||
console.log(e);
|
||||
});
|
||||
|
||||
|
|
@ -0,0 +1,245 @@
|
|||
include mixins
|
||||
include mixins_pentryedit
|
||||
|
||||
mixin location_list(the_locations)
|
||||
.col-sm-12(style="padding-right: 0px;")
|
||||
if the_locations.length === 0
|
||||
p Keine Orte ausgewählt.
|
||||
else
|
||||
table(class="table table-condensed", style="margin-bottom: 5px;")
|
||||
thead
|
||||
tr
|
||||
th
|
||||
span(style="color: grey; font-size: 80%;") Name
|
||||
th
|
||||
span(style="color: grey; font-size: 80%;") Signum
|
||||
th
|
||||
tbody
|
||||
each loc in the_locations
|
||||
tr(id="#{loc.uid}", data-uid="#{loc.uid}")
|
||||
td(width="70%") #{loc.name}
|
||||
td(widht="20%") #{loc.sign}
|
||||
td(align="right", style="white-space: nowrap;")
|
||||
if loc.id === "other"
|
||||
span( class="glyphicon glyphicon-edit"
|
||||
aria-hidden="true",
|
||||
style="color: blue; cursor: pointer;",
|
||||
onclick="save_and_goto('edit_location', {'location': '#{loc.uid}'});")
|
||||
span( class="glyphicon glyphicon-trash",
|
||||
aria-hidden="true",
|
||||
style='color: red; padding-right: 10px; padding-left: 10px; cursor: pointer;'
|
||||
data-toggle="modal", data-target="#confirmDelete", data-delete-type="Ort", data-delete-name="#{loc.name}"
|
||||
)
|
||||
|
||||
- var parent_event_uuid = (is_thereafter ? parent_event.uuid : "");
|
||||
- var parent_event_start = (is_thereafter ? event.parent_start : "");
|
||||
|
||||
form(class="form-horizontal subroot", role="form", id="form", method="POST", action="#{event_href}/commit")
|
||||
.new_flex_zero
|
||||
.container-fluid(style="margin-bottom: 20px;")
|
||||
input(type="hidden", name="pcalview", value="#{pcalview}")
|
||||
button(class="btn btn-success btn-sm", type="submit")
|
||||
span(class="glyphicon glyphicon-ok", aria-hidden="true")
|
||||
span
|
||||
span Übernehmen
|
||||
|
||||
+messageview(messages.other)
|
||||
|
||||
.new_flex_one
|
||||
.container-fluid
|
||||
|
||||
if ! is_thereafter
|
||||
.form-group
|
||||
label(for='edit_kontext', class="col-sm-2 control-label") Kontext
|
||||
.col-sm-10
|
||||
.input-group
|
||||
input(id="edit_kontext_dn", type="hidden", name="punit_dn", value="#{event.punit.dn}")
|
||||
input(id="edit_kontext", type="text", name="punit_name", class="form-control", value="#{event.punit.name}", readonly)
|
||||
span(class="input-group-btn")
|
||||
button(class="btn btn-default", type="button", onclick="save_and_goto('select_pastoralunit', {})") Ändern
|
||||
|
||||
.form-group
|
||||
label(for='edit_name', class="col-sm-2 control-label") Name
|
||||
.col-sm-10
|
||||
input(id='edit_name', type="text", class="form-control noEnterSubmit", name="edit_name", value="#{event.name}", required)
|
||||
.help-block.with-errors
|
||||
|
||||
.form-group
|
||||
label(for='edit_name_secondary', class="col-sm-2 control-label") Zusatz zum Namen
|
||||
.col-sm-10
|
||||
input(id='edit_name_secondary', type="text", class="form-control noEnterSubmit", name="edit_name_secondary", value="#{event.name_secondary}")
|
||||
.help-block.with-errors
|
||||
|
||||
.form-group
|
||||
label(for='combo_type', class="col-sm-2 control-label") Typ
|
||||
.col-sm-10
|
||||
select(id='combo_type', name="combo_type", class="form-control")
|
||||
option(value="gdx") Gottesdienst (außergewöhnlich)
|
||||
option(value="gd") Gottesdienst
|
||||
option(value="publx") Öffentlich (außergewöhnlich)
|
||||
option(value="publ") Öffentlich
|
||||
option(value="intern") Intern
|
||||
option(value="hidden") Verborgen
|
||||
|
||||
script.
|
||||
$("#combo_type").val("#{event.visibility}")
|
||||
|
||||
if ! is_thereafter
|
||||
.form-group
|
||||
label(for='edit_begin', class="col-sm-2 control-label") Beginn
|
||||
.col-sm-5
|
||||
input(id='edit_begin', type="text", class="form-control noEnterSubmit", name="edit_begin",
|
||||
pattern="([01][0-9]|2[0-3]):[0-5][0-9]",
|
||||
data-error="Bitte geben Sie eine gültige Uhrzeit ein!",
|
||||
data-when_end_then_start="bar",
|
||||
data-when_end_then_start-error="Wenn Sie ein Ende angeben, müssen Sie auch einen Beginn angeben!",
|
||||
value="#{event.start}")
|
||||
.help-block.with-errors
|
||||
|
||||
- var disable_end = is_thereafter && parent_event.start == "";
|
||||
.form-group(style="margin-bottom: 5px;")
|
||||
label(for='edit_end', class="col-sm-2 control-label") Ende
|
||||
.col-sm-5
|
||||
input(id='edit_end', type="text", class="form-control noEnterSubmit", name="edit_end",
|
||||
pattern="(([01][0-9]|2[0-3]):[0-5][0-9])|(24:00)",
|
||||
data-error="Bitte geben Sie eine gültige Uhrzeit ein!",
|
||||
data-when_end_then_start="bar",
|
||||
data-when_end_then_start-error="Wenn Sie ein Ende angeben, müssen Sie auch einen Beginn angeben!",
|
||||
data-end_after_start="bar",
|
||||
data-end_after_start-error="Das Ende muss nach dem Beginn liegen!",
|
||||
value="#{event.end}",
|
||||
disabled=disable_end)
|
||||
.help-block.with-errors
|
||||
if disable_end
|
||||
p Da das übergeordnete Ereignis keinen Beginn hat, können Sie hier kein Ende angeben!
|
||||
|
||||
.form-group
|
||||
label(for='check_end_is_vague', class="col-sm-2 control-label", id="check_end_is_vague_label") Ende ist ungenau
|
||||
.col-sm-5.checkbox
|
||||
label
|
||||
input(id='check_end_is_vague', type="checkbox", name="check_end_is_vague", checked=event.end_is_vague, disabled=disable_end)
|
||||
|
||||
script.
|
||||
if($('#edit_end').val().trim().length===0)
|
||||
{
|
||||
$('#check_end_is_vague').prop('disabled', true);
|
||||
$('#check_end_is_vague_label').css('color','grey');
|
||||
}
|
||||
|
||||
$("#edit_end").on('keyup blur', function(){
|
||||
var disable_end_is_vague = (this.value.trim().length===0);
|
||||
$('#check_end_is_vague').prop('disabled', disable_end_is_vague);
|
||||
$('#check_end_is_vague_label').css('color', (disable_end_is_vague ? "grey" : "black"));
|
||||
});
|
||||
|
||||
.row
|
||||
div(class="col-xs-12 col-sm-6", style="margin-bottom: 20px;")
|
||||
fieldset(id="locations")
|
||||
legend(style="font-size: 150%; margin-bottom: 10px;")
|
||||
table(width="100%")
|
||||
tr
|
||||
td Orte
|
||||
td(align="right")
|
||||
+dropdown_button("Hinzufügen", "new_location", "right")
|
||||
+dropdown_button_element_href("Von Liste", "javascript: save_and_goto('add_predefined_location', {});")
|
||||
+dropdown_button_element_href("Manuell", "javascript: save_and_goto('add_location', {});")
|
||||
+location_list(event.locations)
|
||||
#messageview_locations
|
||||
if messages.locations.length > 0
|
||||
+messageview(messages.locations)
|
||||
fieldset(class="col-xs-12 col-sm-6", id="involved")
|
||||
legend(style="font-size: 150%;") Beteiligte
|
||||
|
||||
div(class="col-sm-12", style="padding-right: 0px;")
|
||||
fieldset
|
||||
+involved_list_label("Allgemein", "font-size: 130%; margin-bottom: 5px;", "font-style: italic;", "")
|
||||
+involved_list(event.involved, "Allgemein", "")
|
||||
|
||||
#messageview_involved_primary
|
||||
if messages.involved.primary.length > 0
|
||||
+messageview(messages.involved.primary)
|
||||
|
||||
fieldset(class="col-sm-12", style="margin-top: 15px; padding-right: 0px;")
|
||||
legend(style="font-size: 130%; margin-bottom: 10px;")
|
||||
table(width="100%")
|
||||
tr
|
||||
td
|
||||
span(class=["glyphicon", "glyphicon-thumbs-up"], aria-hidden="true")
|
||||
span
|
||||
span(style=style_headline) <i>Dienste</i>
|
||||
td(align="right")
|
||||
button(type="button", class="btn btn-default btn-xs", onclick="save_and_goto('add_role', {});")
|
||||
span( class="glyphicon glyphicon-plus", aria-hidden="true")
|
||||
span
|
||||
span Dienst hinzufügen
|
||||
|
||||
if event.involved_roles.length === 0
|
||||
.col-sm-12
|
||||
p Keine Dienste angegeben
|
||||
else
|
||||
div
|
||||
each role in event.involved_roles
|
||||
div(class="col-sm-12", style="padding-right: 0px; margin-top: 5px;")
|
||||
fieldset(data-uid="#{role.uid}")
|
||||
+involved_list_label(role.name, "font-size: 120%; margin-bottom: 5px;", "font-weight: normal; font-style: italic;", role.uid)
|
||||
+involved_list(role.involved, role.name, role.uid)
|
||||
div(id="messageview_involved_" + role.uid)
|
||||
if messages.involved[role.uid] && messages.involved[role.uid].length > 0
|
||||
+messageview(messages.involved[role.uid])
|
||||
.row
|
||||
fieldset(class="col-sm-12", style="margin-top: 20px;")
|
||||
legend(style="font-size: 150%") Beschreibung
|
||||
textarea(class="form-control", rows="5", id="area_description", name="area_description").
|
||||
#{event.description}
|
||||
.row
|
||||
fieldset(class="col-sm-12", style="margin-top: 20px; padding-bottom: 200px;")
|
||||
legend(style="font-size: 150%") Anmerkungen
|
||||
textarea(class="form-control", rows="5", id="area_annotations", name="area_annotations").
|
||||
#{event.annotations}
|
||||
script.
|
||||
$('.noEnterSubmit').keypress(function(e){
|
||||
if ( e.which == 13 ) e.preventDefault();
|
||||
});
|
||||
|
||||
$('#form').validator({
|
||||
custom: {
|
||||
end_after_start: function(el)
|
||||
{
|
||||
var start = "";
|
||||
console.log(#{is_thereafter})
|
||||
if(#{is_thereafter})
|
||||
start = "#{parent_event_start}";
|
||||
else
|
||||
start = $('#edit_begin').val();
|
||||
var end = $('#edit_end').val();
|
||||
|
||||
console.log(start);
|
||||
console.log(end);
|
||||
|
||||
if(end.length === 0)
|
||||
return;
|
||||
|
||||
if (Date.parse("2015-08-31T"+end) <= Date.parse("2015-08-31T"+start))
|
||||
return "Das Ende des Ereignisses muss nach dessen Beginn liegen!";
|
||||
},
|
||||
when_end_then_start: function(el)
|
||||
{
|
||||
if(#{is_thereafter})
|
||||
return;
|
||||
console.log("WHEN END THEN START");
|
||||
|
||||
var start = $('#edit_begin').val().trim();
|
||||
var end = $('#edit_end').val().trim();
|
||||
|
||||
if(end.length > 0 && start.length===0)
|
||||
return "Wenn Sie ein Ende angeben, müssen Sie auch einen Beginn angeben!";
|
||||
}
|
||||
}
|
||||
}).on('invalid.bs.validator', function (e) {
|
||||
console.log("INVALID");
|
||||
console.log(e);
|
||||
}).on('valid.bs.validator', function (e) {
|
||||
console.log("VALID");
|
||||
console.log(e);
|
||||
});
|
||||
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
include mixins
|
||||
|
||||
form(class="form-horizontal subroot", role="form", id="form", method="POST", action="#{keep_in_mind_href}/commit")
|
||||
.new_flex_zero(style="margin-bottom: 20px;")
|
||||
.container-fluid
|
||||
button(class="btn btn-success btn-sm", type="submit")
|
||||
span(class="glyphicon glyphicon-ok", aria-hidden="true")
|
||||
span
|
||||
span Übernehmen
|
||||
|
||||
+messageview(messages.other)
|
||||
|
||||
.new_flex_one
|
||||
.container-fluid
|
||||
|
||||
.form-group
|
||||
label(for='edit_kontext', class="col-sm-2 control-label") Kontext
|
||||
.col-sm-10
|
||||
.input-group
|
||||
input(id="edit_kontext_dn", type="hidden", name="punit_dn", value="#{keep_in_mind.punit.dn}")
|
||||
input(id="edit_kontext", type="text", name="punit_name", class="form-control", value="#{keep_in_mind.punit.name}", readonly)
|
||||
span(class="input-group-btn")
|
||||
button(class="btn btn-default", type="button", onclick="save_and_goto('select_pastoralunit', {})") Ändern
|
||||
|
||||
.form-group
|
||||
label(for='edit_name', class="col-sm-2 control-label") Kurzbeschreibung
|
||||
.col-sm-10
|
||||
input(id='edit_name', type="text", class="form-control noEnterSubmit", name="edit_name", value="#{keep_in_mind.name}", required)
|
||||
.help-block.with-errors
|
||||
.row
|
||||
fieldset(class="col-sm-12", style="margin-top: 20px; padding-bottom: 200px;")
|
||||
legend(style="font-size: 150%") Beschreibung
|
||||
textarea(class="form-control", rows="5", id="area_description", name="area_description").
|
||||
#{keep_in_mind.description}
|
||||
script.
|
||||
$('.noEnterSubmit').keydown(function(e){
|
||||
if ( e.which == 13 ) e.preventDefault();
|
||||
});
|
||||
|
||||
$('.noDirectInput').keydown(function(e) {
|
||||
var target = $(e.currentTarget);
|
||||
var form_group = target.closest('.form-group');
|
||||
var help_block = form_group.find('.with-errors');
|
||||
if(! form_group.hasClass('has-error'))
|
||||
{
|
||||
target.closest('.form-group').addClass('has-error');
|
||||
}
|
||||
if(! help_block.hasClass('has-halieus-error')) {
|
||||
help_block.addClass('has-halieus-error');
|
||||
help_block.append("<ul class='list-unstyled'><li>Sie müssen den 'Ändern'-Button benutzen!</li></ul>");
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
});
|
||||
$('.noDirectInput').keyup(function(e) { e.preventDefault(); });
|
||||
$('.noDirectInput').keypress(function(e) { e.preventDefault(); });
|
||||
|
||||
$('.noDirectInput').focusout(function(e) {
|
||||
var target = $(e.currentTarget);
|
||||
var form_group = target.closest('.form-group');
|
||||
var help_block = form_group.find('.with-errors');
|
||||
help_block.empty();
|
||||
help_block.removeClass('has-halieus-error');
|
||||
});
|
||||
|
||||
$('#form').validator().on('invalid.bs.validator', function (e) {
|
||||
console.log("INVALID");
|
||||
console.log(e);
|
||||
}).on('valid.bs.validator', function (e) {
|
||||
console.log("VALID");
|
||||
console.log(e);
|
||||
});
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
include mixins
|
||||
include mixins_pentryedit
|
||||
|
||||
form(class="form-horizontal subroot", role="form", id="form", method="POST", action="#{todo_href}/commit")
|
||||
.new_flex_zero(style="margin-bottom: 20px;")
|
||||
.container-fluid
|
||||
button(class="btn btn-success btn-sm", type="submit")
|
||||
span(class="glyphicon glyphicon-ok", aria-hidden="true")
|
||||
span
|
||||
span Übernehmen
|
||||
|
||||
+messageview(messages.other)
|
||||
|
||||
.new_flex_one
|
||||
.container-fluid
|
||||
|
||||
.form-group
|
||||
label(for='edit_kontext', class="col-sm-2 control-label") Kontext
|
||||
.col-sm-10
|
||||
.input-group
|
||||
input(id="edit_kontext_dn", type="hidden", name="punit_dn", value="#{todo.punit.dn}")
|
||||
input(id="edit_kontext", type="text", name="punit_name", class="form-control", value="#{todo.punit.name}", readonly)
|
||||
span(class="input-group-btn")
|
||||
button(class="btn btn-default", type="button", onclick="save_and_goto('select_pastoralunit', {})") Ändern
|
||||
.form-group
|
||||
label(for='edit_name', class="col-sm-2 control-label") Kurzbeschreibung
|
||||
.col-sm-10
|
||||
input(id='edit_name', type="text", class="form-control noEnterSubmit", name="edit_name", value="#{todo.name}", required)
|
||||
.help-block.with-errors
|
||||
.row
|
||||
fieldset(class="col-sm-12", style="margin-top: 10px;")
|
||||
legend(style="font-size: 150%") Beschreibung
|
||||
textarea(class="form-control", rows="5", id="area_description", name="area_description").
|
||||
#{todo.description}
|
||||
.row(style="margin-bottom: 75px;")
|
||||
div(class="col-sm-12", style="margin-top: 20px;", id="involved")
|
||||
fieldset
|
||||
+involved_list_label("Beteiligte", "font-size: 150%; margin-bottom: 5px;", "font-style: italic;", "")
|
||||
+involved_list(todo.involved, "Beteiligte", "")
|
||||
#messageview_involved_primary
|
||||
if messages.involved.primary.length > 0
|
||||
+messageview(messages.involved.primary)
|
||||
|
||||
script.
|
||||
$('.noEnterSubmit').keypress(function(e){
|
||||
if ( e.which == 13 ) e.prtodoDefault();
|
||||
});
|
||||
|
||||
$('#form').validator().on('invalid.bs.validator', function (e) {
|
||||
console.log("INVALID");
|
||||
console.log(e);
|
||||
}).on('valid.bs.validator', function (e) {
|
||||
console.log("VALID");
|
||||
console.log(e);
|
||||
});
|
||||
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
include mixins
|
||||
include mixins_pentryedit
|
||||
|
||||
form(class="form-horizontal subroot", role="form", id="form", method="POST", action="#{vehicle_use_href}/commit")
|
||||
.new_flex_zero(style="margin-bottom: 20px;")
|
||||
.container-fluid
|
||||
button(class="btn btn-success btn-xs", type="submit")
|
||||
span(class="glyphicon glyphicon-ok", aria-hidden="true")
|
||||
span
|
||||
span Übernehmen
|
||||
|
||||
+messageview(messages.other)
|
||||
|
||||
.new_flex_one
|
||||
.container-fluid
|
||||
|
||||
.form-group
|
||||
label(for='edit_kontext', class="col-sm-2 control-label") Kontext
|
||||
.col-sm-10
|
||||
.input-group
|
||||
input(id="edit_kontext_dn", type="hidden", name="punit_dn", value="#{vehicle_use.punit.dn}")
|
||||
input(id="edit_kontext", type="text", name="punit_name", class="form-control", value="#{vehicle_use.punit.name}", readonly)
|
||||
span(class="input-group-btn")
|
||||
button(class="btn btn-default", type="button", onclick="save_and_goto('select_pastoralunit', {})") Ändern
|
||||
.form-group
|
||||
label(for='combo_vehicle', class="col-sm-2 control-label") Typ
|
||||
.col-sm-10
|
||||
select(id='combo_vehicle', name="combo_vehicle", class="form-control")
|
||||
each v in vehicles
|
||||
option(value="#{v.id}") <b>#{v.name}</b> (#{v.pretty.unit})
|
||||
script.
|
||||
$("#combo_vehicle").val("#{vehicle_use.vehicle_id}")
|
||||
.form-group
|
||||
label(for='edit_name', class="col-sm-2 control-label") Kurzbeschreibung
|
||||
.col-sm-10
|
||||
input(id='edit_name', type="text", class="form-control noEnterSubmit", name="edit_name", value="#{vehicle_use.name}", required)
|
||||
.help-block.with-errors
|
||||
.row
|
||||
fieldset(class="col-sm-12", style="margin-top: 10px;")
|
||||
legend(style="font-size: 150%") Beschreibung
|
||||
textarea(class="form-control", rows="5", id="area_description", name="area_description").
|
||||
#{vehicle_use.description}
|
||||
.row(style="margin-bottom: 75px;")
|
||||
div(class="col-sm-12", style="margin-top: 20px;", id="involved")
|
||||
fieldset
|
||||
+involved_list_label("Beteiligte", "font-size: 150%; margin-bottom: 5px;", "font-style: italic;", "")
|
||||
+involved_list(vehicle_use.involved, "Beteiligte", "")
|
||||
#messageview_involved_primary
|
||||
if messages.involved.primary.length > 0
|
||||
+messageview(messages.involved.primary)
|
||||
script.
|
||||
$('.noEnterSubmit').keypress(function(e){
|
||||
if ( e.which == 13 ) e.prvehicle_useDefault();
|
||||
});
|
||||
|
||||
$('#form').validator().on('invalid.bs.validator', function (e) {
|
||||
console.log("INVALID");
|
||||
console.log(e);
|
||||
}).on('valid.bs.validator', function (e) {
|
||||
console.log("VALID");
|
||||
console.log(e);
|
||||
});
|
||||
|
||||
|
|
@ -0,0 +1,238 @@
|
|||
include mixins
|
||||
include mixins_email
|
||||
|
||||
doctype html
|
||||
html
|
||||
include header
|
||||
link(href="/stylesheets/bootstrap-datepicker.min.css", rel="stylesheet")
|
||||
script(src='/javascripts/bootstrap-datepicker.min.js' )
|
||||
script(src='/javascripts/bootstrap-datepicker.de.min.js' )
|
||||
script(src='/javascripts/tinymce/tinymce.min.js' )
|
||||
script(src="/javascripts/validator.min.js")
|
||||
script(src='/javascripts/pfiswebsocket.js')
|
||||
body
|
||||
|
||||
+standard_delete_dialog("confirmDelete")
|
||||
|
||||
.modal.fade(id="sendEmail", role="dialog", aria-labelledby="sendEmailLabel", aria-hidden="true")
|
||||
.modal-dialog(role="document")
|
||||
.modal-content
|
||||
.modal-header
|
||||
h4(class="modal-title", id="sendEmailLabel") eMail versenden
|
||||
.modal-body
|
||||
p(style="font-weight: bold; font-style: italic;") Bitte warten Sie, während die eMail versendet wird ...
|
||||
#sendEmail_message
|
||||
#sendEmail_explanation
|
||||
.modal-footer
|
||||
button#sendEmail_closebutton(type="button", class="btn btn-default", data-dismiss="modal", style="display: none;") Schließen
|
||||
|
||||
#emailaddresschooser.sidewideoverlay(style="z-index: 5;")
|
||||
.root
|
||||
.new_flex_zero
|
||||
+nav_with_form("PfarrInfoSystem", "PfIS", "entryeditnav")
|
||||
p.pentryedit_headline eMail-Empfänger auswählen
|
||||
|
||||
.new_flex_one(style="margin-bottom: 15px; padding-left: 15px; padding-right: 15px; overflow: auto;")
|
||||
+email_directinput
|
||||
.parishdbelemspane(style="margin-top: 5px;")
|
||||
for elem in parishdb
|
||||
if elem.type === "person"
|
||||
+email_do_person(elem)
|
||||
if elem.type === "group"
|
||||
+email_do_group(elem)
|
||||
|
||||
.root
|
||||
|
||||
.new_flex_zero
|
||||
+nav("PfarrInfoSystem", "dropdown_menu")
|
||||
p.pentryedit_headline eMail versenden
|
||||
button.btn.btn-success.btn-xs#sendbutton(style="margin-left: 15px; margin-right: 5px;", data-toggle="modal" data-target="#sendEmail") Senden
|
||||
span.glyphicon.glyphicon-info-sign#sendbutton_info(aria-hidden="true", style="color: red;", data-toggle="tooltip" data-placement="bottom" title="Sie müssen mindestens einen Empfänger sowie den Betreff angeben!")
|
||||
|
||||
.new_flex_one(style="margin-bottom: 15px; padding-left: 15px; padding-right: 15px; overflow: auto;")
|
||||
+emaildestinationview([], [], [], true, "history.pushState({direction: 'emailchooser'}, document.title, location.pathname); $('#emailinput').val('peter@halieus.de'); $('#emailaddresschooser').show();")
|
||||
fieldset(id="fieldset_subject")
|
||||
legend(style="font-size: 120%; margin-bottom: 0px;") Betreff
|
||||
//- form#form-subject
|
||||
//- .form-group
|
||||
input(type="text", id="subject", class="control-label col-xs-12", oninput="update_sendbutton();")
|
||||
fieldset(id="fieldset_body", style="margin-top: 5px;")
|
||||
legend(style="font-size: 120%; margin-bottom: 0px;") Nachricht
|
||||
textarea#bodyeditor
|
||||
fieldset(style="margin-top: 5px;")
|
||||
legend(style="font-size: 120%; margin-bottom: 0px;") Anhänge
|
||||
span(style="font-size: 65%; margin-left: 2px;") Zum Hinzufügen auf den Button unten klicken!
|
||||
#attachments_parent
|
||||
p <i>Keine Anhänge vorhanden.</i>
|
||||
//- tr(data-addresses="#{empf.addresses}", data-recipient-name="#{empf.recipient_name}")
|
||||
//- td(class="the_email_recipient", width="90%") !{empf.recipient}
|
||||
//- td
|
||||
//- span( class="glyphicon glyphicon-trash",
|
||||
//- aria-hidden="true",
|
||||
//- style="color: red; padding-right: 10px; padding-left: 10px; cursor: pointer;"
|
||||
//- data-toggle="modal",
|
||||
//- data-target="#confirmDelete",
|
||||
//- data-delete-type="to", data-delete-name="#{empf.recipient_name}")
|
||||
|
||||
|
||||
input(type="file", id="fileupload", style="margin-top: 0px;")
|
||||
p#upload_pending_indicator(style='display: none; text-style: italic;') Datei wird hochgeladen...
|
||||
//- button#fileuploadbutton(type="button", class="btn btn-default btn-xs", onclick="do_fileupload();", disabled) Datei hochladen
|
||||
|
||||
|
||||
script.
|
||||
$("#sendbutton").prop('disabled', 'true');
|
||||
|
||||
$(function () {
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
})
|
||||
|
||||
tinymce.editors=[];
|
||||
tinymce.init({
|
||||
selector: '#bodyeditor',
|
||||
resize: false,
|
||||
language: 'de',
|
||||
plugins: 'advlist,autolink,autoresize,lists,link,image,charmap,print,preview,anchor,searchreplace,visualblocks,code,insertdatetime,media,table,contextmenu,paste',
|
||||
toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image',
|
||||
autoresize_bottom_margin: 5,
|
||||
autoresize_min_height: 150
|
||||
});
|
||||
|
||||
|
||||
$("#entryeditnav-form").on('submit', function(e){
|
||||
console.log('FILTER SUBMIT');
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
function show_searchbar(functiontocall) {
|
||||
$("#entryeditnav-form").append("<div class='input-group'><div class='input-group-addon'><span class='glyphicon glyphicon-search'></span></div><input class='form-control' type='text' placeholder='Suche' style='display: inline;' oninput='" + functiontocall + "'></input></div>");
|
||||
}
|
||||
show_searchbar("adjust_visible_elems(this);"); // can always be on!!!
|
||||
|
||||
var __cache_to_is_filled = false;
|
||||
function update_sendbutton(to_is_filled) {
|
||||
if(typeof to_is_filled !== 'undefined')
|
||||
__cache_to_is_filled = to_is_filled;
|
||||
console.log('update_sendbutton: ', to_is_filled, __cache_to_is_filled);
|
||||
if(__cache_to_is_filled && $('#subject').val() != '') {
|
||||
$('#sendbutton').prop('disabled', false);
|
||||
$('#sendbutton_info').hide();
|
||||
}
|
||||
else {
|
||||
$('#sendbutton').prop('disabled', true);
|
||||
$('#sendbutton_info').show();
|
||||
}
|
||||
}
|
||||
|
||||
var ws = new PfISWebSocket("#{sessionuuid}", "#{taskuuid}");
|
||||
ws.bind_standard_close_handler();
|
||||
|
||||
$("#fileupload").on('change', function(e){
|
||||
var files=$("#fileupload").prop('files');
|
||||
/*if(files.length === 0)
|
||||
$("#fileuploadbutton").prop('disabled', true);
|
||||
else
|
||||
$("#fileuploadbutton").prop('disabled', false);*/
|
||||
do_fileupload();
|
||||
});
|
||||
|
||||
function do_fileupload() {
|
||||
var files=$("#fileupload").prop('files');
|
||||
if(files.length === 0)
|
||||
return;
|
||||
console.log(files);
|
||||
console.log(files.length);
|
||||
|
||||
$("#upload_pending_indicator").show();
|
||||
|
||||
// $("#fileuploadbutton").prop('disabled', true);
|
||||
|
||||
for (var i = 0, numFiles = files.length; i < numFiles; i++) {
|
||||
var file = files[i];
|
||||
console.log(file.name);
|
||||
console.log(file.size);
|
||||
console.log(file.type);
|
||||
|
||||
var reader = new FileReader();
|
||||
reader.onload = (function(aFile) { return function(e) {
|
||||
var data = {
|
||||
name : aFile.name,
|
||||
size : aFile.size,
|
||||
type : aFile.type,
|
||||
content : e.target.result,
|
||||
uid : generateUID()
|
||||
};
|
||||
|
||||
ws.send('fileupload', data);
|
||||
}})(file);
|
||||
reader.readAsDataURL(file);
|
||||
}
|
||||
$("#fileupload").val('');
|
||||
}
|
||||
|
||||
ws.bind('fileupload_result', function(data) { console.log(data); add_attachment(data)});
|
||||
|
||||
function add_attachment(file) {
|
||||
var the_table = $("#attachments");
|
||||
|
||||
if(the_table.length === 0) {
|
||||
$("#attachments_parent").empty();
|
||||
// <thead><tr><td width='75%'><span style='color: grey; font-size: 80%;'>Name</span></td><td width='20%'><span style='color: grey; font-size: 80%;'>Typ</span></td><td width='5%'></td></tr></thead>
|
||||
$("#attachments_parent").append("<table width='100%' class='table table-condensed' style='margin-bottom: 0px;' id='attachments'></table>");
|
||||
the_table = $("#attachments");
|
||||
}
|
||||
|
||||
var the_delete = '<span class="glyphicon glyphicon-trash" aria-hidden="true" style="color: red; padding-right: 10px; padding-left: 10px; cursor: pointer;" data-toggle="modal", data-target="#confirmDelete", data-delete-type="Anhang", data-delete-name="' + file.name + '"></span>';
|
||||
// width='90%'
|
||||
the_table.append("<tr id='" + file.uid + "'><td><p style='margin-bottom: 0px;'>" + file.name + "</p><p class='parishdbelemspane_elem_kontext', style='font-size: 80%;'>(" + file.type + ")</p></td><td width='5%'>" + the_delete + "</td></tr>");
|
||||
|
||||
$("#upload_pending_indicator").hide();
|
||||
}
|
||||
|
||||
var is_sending = false;
|
||||
|
||||
$('#sendEmail').on('show.bs.modal', function (e) {
|
||||
is_sending = true;
|
||||
|
||||
$("#sendEmail_message").html("");
|
||||
$("#sendEmail_explanation").html("");
|
||||
$("#sendEmail_closebutton").hide();
|
||||
|
||||
var data = {
|
||||
dest_to : get_emailaddresses_from_table("#destination_to"),
|
||||
dest_cc : get_emailaddresses_from_table("#destination_cc"),
|
||||
dest_bcc : get_emailaddresses_from_table("#destination_bcc"),
|
||||
subject : $("#subject").val(),
|
||||
body : tinymce.get('bodyeditor').getContent(),
|
||||
body_raw: tinymce.get('bodyeditor').getContent({format : 'text'})
|
||||
};
|
||||
|
||||
ws.send('email_send', data);
|
||||
});
|
||||
|
||||
$("#sendEmail").on('hidden.bs.modal', function(e) {
|
||||
is_sending = false;
|
||||
$("#button_summary_back").show();
|
||||
$("#button_summary_send").show();
|
||||
});
|
||||
|
||||
ws.bind('email_send_result', function(result) {
|
||||
console.log('RESULT', result);
|
||||
$("#sendEmail_message").html(result.message);
|
||||
$("#sendEmail_explanation").html(result.explanation);
|
||||
$("#sendEmail_closebutton").show();
|
||||
});
|
||||
|
||||
history.pushState ({direction: 'main'}, document.title, location.pathname);
|
||||
|
||||
window.addEventListener("popstate", function(e) {
|
||||
if(e.state !== null) {
|
||||
console.log(e.state);
|
||||
if(e.state.direction === 'main')
|
||||
$('#emailaddresschooser').hide();
|
||||
else if(e.state.direction === 'emailchooser')
|
||||
$('#emailaddresschooser').show();
|
||||
}
|
||||
}, false);
|
||||
|
||||
+email_scripts("$('#emailaddresschooser').hide();", "update_sendbutton", "confirmDelete")
|
||||
|
|
@ -0,0 +1,228 @@
|
|||
include mixins
|
||||
include mixins_email
|
||||
|
||||
mixin do_group(elem)
|
||||
+email_do_group(elem)
|
||||
|
||||
mixin do_person(elem)
|
||||
+email_do_person(elem)
|
||||
|
||||
.subroot(style="height: 100%;")
|
||||
.new_flex_zero(style="padding-left: 15px; padding-right: 15px;")
|
||||
p.pentryedit_subheadline Geben Sie die eMail-Adressen an. Sie können dazu aus der Pfarrdatenbank eine Person oder eine Gruppe wählen!
|
||||
|
||||
form(class="form-horizontal", id="form-parishdbpersongroupselector")
|
||||
|
||||
fieldset(id="filedset_to")
|
||||
legend(style="font-size: 120%; margin-bottom: 0px;") Empfänger
|
||||
#destination_to_parent
|
||||
if dest_to.length > 0
|
||||
table(width='100%', class='table table-condensed', style='margin-bottom: 10px;', id="destination_to")
|
||||
each empf in dest_to
|
||||
tr(data-addresses="#{empf.addresses}", data-recipient-name="#{empf.recipient_name}")
|
||||
td(class="the_email_recipient", width="90%") !{empf.recipient}
|
||||
td
|
||||
span( class="glyphicon glyphicon-trash",
|
||||
aria-hidden="true",
|
||||
style="color: red; padding-right: 10px; padding-left: 10px; cursor: pointer;"
|
||||
data-toggle="modal",
|
||||
data-target="#confirmDelete",
|
||||
data-delete-type="to", data-delete-name="#{empf.recipient_name}")
|
||||
|
||||
else
|
||||
p <i>Keine Empfänger in dieser Kategorie angegeben.</i>
|
||||
|
||||
- var display_fieldset_cc = (dest_cc.length > 0 ? "" : "display: none;");
|
||||
fieldset(style=display_fieldset_cc, id="fieldset_cc")
|
||||
legend(style="font-size: 120%; margin-bottom: 0px;") Kopie
|
||||
#destination_cc_parent
|
||||
if dest_cc.length > 0
|
||||
table(width='100%', class='table table-condensed', style='margin-bottom: 10px;', id="destination_cc")
|
||||
each empf in dest_cc
|
||||
tr(data-addresses="#{empf.addresses}", data-recipient-name="#{empf.recipient_name}")
|
||||
td(class="the_email_recipient", width="90%") !{empf.recipient}
|
||||
td
|
||||
span( class="glyphicon glyphicon-trash",
|
||||
aria-hidden="true",
|
||||
style="color: red; padding-right: 10px; padding-left: 10px; cursor: pointer;"
|
||||
data-toggle="modal",
|
||||
data-target="#confirmDelete",
|
||||
data-delete-type="cc", data-delete-name="#{empf.recipient_name}")
|
||||
else
|
||||
p <i>Keine Empfänger in dieser Kategorie angegeben.</i>
|
||||
|
||||
- var display_fieldset_bcc = (dest_bcc.length > 0 ? "" : "display: none;");
|
||||
fieldset(style="margin-bottom: 10px;" + display_fieldset_bcc, id="fieldset_bcc")
|
||||
legend(style="font-size: 120%; margin-bottom: 0px;") Blindkopie
|
||||
#destination_bcc_parent
|
||||
if dest_bcc.length > 0
|
||||
table(width='100%', class='table table-condensed', style='margin-bottom: 10px;', id="destination_bcc")
|
||||
each empf in dest_bcc
|
||||
tr(data-addresses="#{empf.addresses}", data-recipient-name="#{empf.recipient_name}")
|
||||
td(class="the_email_recipient", width="90%") !{empf.recipient}
|
||||
td
|
||||
span( class="glyphicon glyphicon-trash",
|
||||
aria-hidden="true",
|
||||
style="color: red; padding-right: 10px; padding-left: 10px; cursor: pointer;"
|
||||
data-toggle="modal",
|
||||
data-target="#confirmDelete",
|
||||
data-delete-type="bcc", data-delete-name="#{empf.recipient-name}")
|
||||
|
||||
else
|
||||
p <i>Keine Empfänger in dieser Kategorie angegeben.</i>
|
||||
|
||||
form(class="form-inline", id="form-emaileditor")
|
||||
.form-group
|
||||
label(for="emailinput") eMail - direkte Eingabe:
|
||||
input(type="email", class="form-control noEnterSubmit", size="65", id="emailinput", placeholder="Gültige eMail-Adresse eingeben, dann Empfangstyp wählen und auf 'Hinzufügen' klicken", required)
|
||||
select(class="form-control", id="emailinput_type")
|
||||
option(value="to") An
|
||||
option(value="cc") Kopie
|
||||
option(value="bcc") Blindkopie
|
||||
button(type="submit", class="btn btn-default") Hinzufügen
|
||||
|
||||
.row
|
||||
.col-sm-12
|
||||
|
||||
button(class="btn btn-warning btn-xs", type="button", onclick="history.back();")
|
||||
span(class="glyphicon glyphicon-remove-circle", aria-hidden="true")
|
||||
span
|
||||
span Zurück
|
||||
|
||||
button(class="btn btn-success btn-xs", type="button", id="button_next", onclick="go_forward_to(pcalpub_steps.SUMMARY,submit_emailaddresses);")
|
||||
span(class="glyphicon glyphicon-ok", aria-hidden="true")
|
||||
span
|
||||
span Weiter
|
||||
|
||||
|
||||
.new_flex_one(style="overflow: auto; padding-left: 15px; padding-right: 15px; margin-top: 10px;")
|
||||
.parishdbelemspane
|
||||
for elem in parishdb
|
||||
if elem.type === "person"
|
||||
+do_person(elem)
|
||||
if elem.type === "group"
|
||||
+do_group(elem)
|
||||
|
||||
script.
|
||||
show_searchbar("adjust_visible_elems(this);");
|
||||
|
||||
if(#{dest_to.length} === 0)
|
||||
$("#button_next").prop('disabled', true);
|
||||
|
||||
$('.noEnterSubmit').keydown(function(e){
|
||||
if ( e.which == 13 ) e.preventDefault();
|
||||
});
|
||||
|
||||
function add_email_address(data) {
|
||||
console.log(data);
|
||||
var table_selector = "destination_" + data.dest;
|
||||
var the_table = $("#"+table_selector);
|
||||
console.log(the_table.length);
|
||||
|
||||
$("#fieldset_" + data.dest).show();
|
||||
|
||||
if(the_table.length === 0) {
|
||||
$("#"+table_selector+"_parent").empty();
|
||||
$("#"+table_selector+"_parent").append("<table width='100%' class='table table-condensed' style='margin-bottom: 10px;' id='" + table_selector + "'></table>");
|
||||
the_table = $("#"+table_selector);
|
||||
|
||||
if(data.dest === "to")
|
||||
$("#button_next").prop('disabled', false);
|
||||
}
|
||||
|
||||
if(data.description === "")
|
||||
data.description = "[als Grppe]";
|
||||
|
||||
var the_delete = '<span class="glyphicon glyphicon-trash" aria-hidden="true" style="color: red; padding-right: 10px; padding-left: 10px; cursor: pointer;" data-toggle="modal", data-target="#confirmDelete", data-delete-type="' + data.dest + '", data-delete-name="' + data.name + '"></span>';
|
||||
the_table.append("<tr data-addresses='" + data.address + "' data-recipient-name='" + data.name + "'><td class='the_email_recipient' width='90%;'><p style='margin-bottom: 0px;'>" + data.name + " (" + data.description + ")</p><p class='parishdbelemspane_elem_kontext', style='font-size: 80%;'>(" + data.kontext + ")</p></td><td>" + the_delete + "</td></tr>");
|
||||
}
|
||||
|
||||
function add_email_address_group(data, elem_uid) {
|
||||
var group_elem = $("#"+elem_uid);
|
||||
var selects = group_elem.find('select');
|
||||
console.log(selects);
|
||||
selects.each(function(index) {
|
||||
var selected_option = $(this).find("option:selected");
|
||||
var val = selected_option.val();
|
||||
console.log(val);
|
||||
data.address += ";" + val;
|
||||
})
|
||||
console.log(data);
|
||||
add_email_address(data);
|
||||
}
|
||||
|
||||
function set_visibility_according_to_filter(substrRegex, elems) {
|
||||
var actual_dn = $("#actual_elem_dn").val();
|
||||
var actual_group = $("#actual_elem_group").val();
|
||||
|
||||
elems.each(function(index) {
|
||||
var txt = $(this).data('elemname');
|
||||
|
||||
var show = substrRegex.test(txt);
|
||||
|
||||
if(show) {
|
||||
$(this).show();
|
||||
}
|
||||
else {
|
||||
$(this).hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function adjust_visible_elems(my_input) {
|
||||
console.log(my_input.value);
|
||||
|
||||
// regex used to determine if a string contains the substring `q`
|
||||
substrRegex = new RegExp(my_input.value, 'i');
|
||||
|
||||
set_visibility_according_to_filter(substrRegex, $("[data-parishdb]"));
|
||||
}
|
||||
|
||||
$('#confirmDelete').on('show.bs.modal', function (e) {
|
||||
$etype = $(e.relatedTarget).attr('data-delete-type');
|
||||
$ename = $(e.relatedTarget).attr('data-delete-name');
|
||||
$(this).find('.modal-body p').text("Sind Sie sicher, dass Sie \"" + $ename + "\" aus der Empfängerliste (" + $etype + ") löschen wollen?");
|
||||
|
||||
// Pass form reference to modal for submission on yes/ok
|
||||
var tr = $(e.relatedTarget).closest('tr');
|
||||
|
||||
$(this).find('.modal-footer #confirm').data('tr', tr);
|
||||
|
||||
$(this).find('.modal-footer #confirm').data('delete-type', $etype);
|
||||
});
|
||||
|
||||
$('#confirmDelete').find('.modal-footer #confirm').on('click', function() {
|
||||
$etype = $(this).data('delete-type');
|
||||
console.log($etype);
|
||||
|
||||
var tr = $(this).data('tr');
|
||||
|
||||
if(tr.is(":last-child") && tr.is(":first-child")) {
|
||||
var table = tr.closest("table");
|
||||
var table_id = table.prop('id');
|
||||
var t_parent = table.parent();
|
||||
table.remove();
|
||||
t_parent.append("<p><i>Keine Empfänger in dieser Kategorie angegeben.</i></p>");
|
||||
if(table_id === "destination_to")
|
||||
$("#button_next").prop('disabled', true);
|
||||
}
|
||||
else
|
||||
tr.remove();
|
||||
|
||||
$('#confirmDelete').modal('hide');
|
||||
});
|
||||
|
||||
$('#form-emaileditor').validator().on('submit', function(e) {
|
||||
if( ! e.isDefaultPrevented() )
|
||||
{
|
||||
console.log(e);
|
||||
var dest;
|
||||
switch($("#emailinput_type").prop("selectedIndex")) {
|
||||
case 1: dest="cc"; break;
|
||||
case 2: dest="bcc"; break;
|
||||
default: dest="to";
|
||||
}
|
||||
add_email_address({'dest': dest, 'name': $("#emailinput").val(), 'kontext': '-', 'description' : 'direkt', 'address': $("#emailinput").val()});
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
include mixins
|
||||
include mixins_email
|
||||
|
||||
+email_directinput
|
||||
.parishdbelemspane(style="margin-top: 5px;")
|
||||
for elem in parishdb
|
||||
if elem.type === "person"
|
||||
+email_do_person(elem)
|
||||
if elem.type === "group"
|
||||
+email_do_group(elem)
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
extends layout
|
||||
|
||||
block content
|
||||
h1= message
|
||||
h2= error.status
|
||||
pre #{error.stack}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
h1= message
|
||||
h2= error.name
|
||||
pre #{error.stack}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
include mixins
|
||||
doctype html
|
||||
html
|
||||
include header
|
||||
body(style="overflow: hidden;")
|
||||
|
||||
.root(style="overflow: hidden;")
|
||||
|
||||
.new_flex_zero
|
||||
+nav("PfarrInfoSystem", "dropdown_menu")
|
||||
|
||||
.container-fluid
|
||||
|
||||
h4 Beim Bearbeiten Ihrer Anfrage sind Fehler aufgetreten!
|
||||
|
||||
each message in messages
|
||||
div(class=["alert", "alert-" + message.type], role="alert")
|
||||
strong #{message.title}
|
||||
span
|
||||
span #{message.message}
|
||||
|
||||
p.
|
||||
Sie können versuchen, einfach <a href="javascript: location.reload()">diese Seite neu zu laden</a>, auf die <a href="/">Startseite</a> zurückzukommen oder sich neu
|
||||
<a href="/login">einzuloggen</a>.
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
include mixins
|
||||
|
||||
- var add_class = is_error ? "" : "alert-dismissible";
|
||||
|
||||
if is_error === true
|
||||
h4 Beim Bearbeiten Ihrer Anfrage sind Fehler aufgetreten!
|
||||
|
||||
each message in messages
|
||||
div(class=["alert", "alert-" + message.type, add_class], role="alert")
|
||||
if is_error === false
|
||||
button(type="button", class="close", data-dismiss="alert", aria-label="Close")
|
||||
span(aria-hidden="true") ×
|
||||
strong #{message.title}
|
||||
span
|
||||
span #{message.message}
|
||||
|
||||
if session_ended === true
|
||||
p.
|
||||
Sie können versuchen, einfach <a href="javascript: location.reload()">diese Seite neu zu laden</a>, auf die <a href="/">Startseite</a> zurückzukommen oder sich neu
|
||||
<a href="/login">einzuloggen</a>.
|
||||
|
|
@ -0,0 +1,187 @@
|
|||
include mixins
|
||||
include mixins_day
|
||||
|
||||
doctype html
|
||||
html
|
||||
include header
|
||||
script(src='/javascripts/socket.io.js' )
|
||||
script(src="/javascripts/jquery.loading.min.js")
|
||||
link(href="/stylesheets/jquery.loading.min.css", rel="stylesheet")
|
||||
body(style="overflow: hidden;")
|
||||
|
||||
.modal.fade(id="confirmDelete", role="dialog", aria-labelledby="confirmDeleteLabel", aria-hidden="true")
|
||||
.modal-dialog(role="document")
|
||||
.modal-content
|
||||
.modal-header
|
||||
button(type="button", class="close", data-dismiss="modal", aria-hidden="true") ×
|
||||
h4(class="modal-title", id="confirmDeleteLabel") Löschen bestätigen
|
||||
.modal-body
|
||||
p Sind Sie sicher, dass Sie das Ereignis löschen wollen?
|
||||
.modal-footer
|
||||
button(type="button", class="btn btn-default", data-dismiss="modal") Abbrechen
|
||||
button(type="button", class="btn btn-danger", id="confirm") Löschen
|
||||
|
||||
|
||||
.root(style="overflow: hidden;")
|
||||
|
||||
.new_flex_zero
|
||||
+nav("PfarrInfoSystem", "dropdown_menu")
|
||||
|
||||
.container-fluid
|
||||
button(class="btn btn-success btn-xs", onclick="location.assign('/day/#{date}?back=false');", style="margin-bottom: 5px;")
|
||||
span(class="glyphicon glyphicon-ok", aria-hidden="true")
|
||||
span
|
||||
span Zurück
|
||||
|
||||
.new_flex_one(style="overflow: auto; padding-left: 15px; padding-right: 15px;")
|
||||
+pevent_with_thereafter(date, event, { details: true, links: true, clickable: false, pcalview: "day"} )
|
||||
|
||||
|
||||
script.
|
||||
$('#confirmDelete').on('show.bs.modal', function (e) {
|
||||
$etype = $(e.relatedTarget).attr('data-event-type');
|
||||
$ename = $(e.relatedTarget).attr('data-event-name');
|
||||
$(this).find('.modal-body p').text("Sind Sie sicher, dass Sie das " + $etype + " \"" + $ename + "\" löschen wollen?");
|
||||
|
||||
$(this).find('.modal-footer #confirm').data('button', $(e.relatedTarget));
|
||||
});
|
||||
|
||||
/*history.pushState(null, null, location.href);
|
||||
window.onpopstate = function(event) {
|
||||
history.go(1);
|
||||
};*/
|
||||
|
||||
var sockets = io.connect();
|
||||
|
||||
var delete_button = {};
|
||||
|
||||
$('#confirmDelete').find('.modal-footer #confirm').on('click', function() {
|
||||
delete_button = $(this).data('button');
|
||||
console.log(delete_button);
|
||||
|
||||
$etype = delete_button.attr('data-event-type');
|
||||
if($etype === "Ereignis") {
|
||||
var form = delete_button.closest("form");
|
||||
form.submit();
|
||||
return;
|
||||
}
|
||||
|
||||
var date = delete_button.data('date');
|
||||
var event = delete_button.data('event-uuid');
|
||||
var tevent = delete_button.data('tevent-uuid');
|
||||
|
||||
console.log(date, event, tevent);
|
||||
|
||||
sockets.emit('tevent_delete', { date: date, event: event, tevent: tevent });
|
||||
});
|
||||
|
||||
sockets.on('tevent_delete_result', function(data) {
|
||||
console.log(data);
|
||||
|
||||
if(data.result === "OK") {
|
||||
|
||||
var eventbox = delete_button.closest('.eventbox');
|
||||
var number_of_children = eventbox.parent().children().length;
|
||||
|
||||
console.log('number_of_children: ', number_of_children);
|
||||
|
||||
if(number_of_children > 1) {
|
||||
if(eventbox.is(':first-child')) { // disable up-button
|
||||
$(eventbox.next().find("div > button:nth-child(2)")[0]).prop('disabled', true);
|
||||
}
|
||||
if(eventbox.is(':last-child')) { // disable down-ubtton
|
||||
$(eventbox.prev().find("div > button:nth-child(3)")[0]).prop('disabled', true);
|
||||
}
|
||||
}
|
||||
|
||||
eventbox.remove();
|
||||
}
|
||||
else
|
||||
console.log('tevent_delete_result: ', data);
|
||||
|
||||
$('#confirmDelete').modal('hide');
|
||||
});
|
||||
|
||||
var updown_button = {};
|
||||
var updown_direction = "";
|
||||
|
||||
sockets.on('tevent_move_updown_result',function(data){
|
||||
console.log(data);
|
||||
/*window.location.reload();*/
|
||||
|
||||
/* http://stackoverflow.com/questions/3050830/reorder-list-elements-jquery */
|
||||
var eventbox = updown_button.closest('.eventbox');
|
||||
var other = {};
|
||||
if(updown_direction === "down")
|
||||
{
|
||||
next = eventbox.next();
|
||||
next.after(eventbox);
|
||||
other = next;
|
||||
}
|
||||
else /* up */
|
||||
{
|
||||
prev = eventbox.prev();
|
||||
prev.before(eventbox);
|
||||
other = prev;
|
||||
}
|
||||
|
||||
if(eventbox.is(':first-child'))
|
||||
{
|
||||
$(eventbox.find("div > button:nth-child(2)")[0]).prop('disabled', true);
|
||||
$(eventbox.find("div > button:nth-child(3)")[0]).prop('disabled', false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(eventbox.is(':last-child'))
|
||||
{
|
||||
$(eventbox.find("div > button:nth-child(2)")[0]).prop('disabled', false);
|
||||
$(eventbox.find("div > button:nth-child(3)")[0]).prop('disabled', true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$(eventbox.find("div > button:nth-child(2)")[0]).prop('disabled', false);
|
||||
$(eventbox.find("div > button:nth-child(3)")[0]).prop('disabled', false);
|
||||
}
|
||||
}
|
||||
|
||||
if(other.is(':first-child'))
|
||||
{
|
||||
$(other.find("div > button:nth-child(2)")[0]).prop('disabled', true);
|
||||
$(other.find("div > button:nth-child(3)")[0]).prop('disabled', false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(other.is(':last-child'))
|
||||
{
|
||||
$(other.find("div > button:nth-child(2)")[0]).prop('disabled', false);
|
||||
$(other.find("div > button:nth-child(3)")[0]).prop('disabled', true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$(other.find("div > button:nth-child(2)")[0]).prop('disabled', false);
|
||||
$(other.find("div > button:nth-child(3)")[0]).prop('disabled', false);
|
||||
}
|
||||
}
|
||||
|
||||
/* $('body').loading('stop'); */
|
||||
});
|
||||
|
||||
do_tevent_move_updown = function(button, date, event, tevent, updown) {
|
||||
updown_button = button;
|
||||
updown_direction = updown;
|
||||
/* $('body').loading(); */
|
||||
sockets.emit('tevent_move_updown', { date: date, event: event, tevent: tevent, updown: updown });
|
||||
}
|
||||
|
||||
history.replaceState({direction: 'back'}, document.title, location.pathname);
|
||||
history.pushState({direction: 'actual'}, document.title, location.pathname);
|
||||
window.addEventListener("popstate", function(e) {
|
||||
console.log(e.state);
|
||||
if((e.state != null) && (e.state.direction === "back")) {
|
||||
history.replaceState(null, document.title, location.pathname);
|
||||
setTimeout(function(){
|
||||
location.replace("/day/#{date}?back=false");
|
||||
},0);
|
||||
}
|
||||
}, false);
|
||||
|
||||
|
|
@ -0,0 +1,443 @@
|
|||
include mixins
|
||||
|
||||
- var parent_event_uuid = (pentrytype === "tevent" ? parent_event.uuid : "");
|
||||
- var pentryfunction = (pentrytype === "tevent" ? "event" : pentrytype);
|
||||
- var generateUID = function() { return "a"+("000000" + (Math.random()*Math.pow(36,6) << 0).toString(36)).slice(-6) };
|
||||
|
||||
doctype html
|
||||
html
|
||||
include header
|
||||
script(src='/javascripts/socket.io.js' )
|
||||
script(src="/javascripts/jquery.loading.min.js")
|
||||
link(href="/stylesheets/jquery.loading.min.css", rel="stylesheet")
|
||||
script(src="/javascripts/typeahead.jquery.min.js")
|
||||
link(href="/stylesheets/mytypeahead.css", rel="stylesheet")
|
||||
script(src="/javascripts/validator.min.js")
|
||||
link(href="/stylesheets/style_day.css", rel="stylesheet")
|
||||
style.
|
||||
.panel { margin-bottom: 5px; }
|
||||
.panel-title { cursor: pointer; }
|
||||
//- .panel_group_and_unit { border-width: 3px; }
|
||||
body
|
||||
|
||||
.modal.fade(id="confirmDelete", role="dialog", aria-labelledby="confirmDeleteLabel", aria-hidden="true")
|
||||
.modal-dialog(role="document")
|
||||
.modal-content
|
||||
.modal-header
|
||||
button(type="button", class="close", data-dismiss="modal", aria-hidden="true") ×
|
||||
h4(class="modal-title", id="confirmDeleteLabel") Löschen bestätigen
|
||||
.modal-body
|
||||
p Sind Sie sicher, dass Sie das Ereignis löschen wollen?
|
||||
.modal-footer
|
||||
button(type="button", class="btn btn-default", data-dismiss="modal") Abbrechen
|
||||
button(type="button", class="btn btn-danger", id="confirm") Löschen
|
||||
|
||||
|
||||
.root
|
||||
|
||||
.new_flex_zero
|
||||
+nav_with_form("PfarrInfoSystem", "PfIS", "entryeditnav")
|
||||
.container-fluid
|
||||
h1 #{pentrytype_pretty} #{edit_type}
|
||||
.small #{date.weekday_short}, #{date.day}. #{date.month} #{date.year}
|
||||
|
||||
.subroot(style="height: 100%;")
|
||||
.container-fluid
|
||||
p Lade Kalendereintrag ...
|
||||
|
||||
|
||||
script.
|
||||
|
||||
var scroll_top = 0;
|
||||
var scroll_top_body = 0;
|
||||
|
||||
$('.noEnterSubmit').keypress(function(e){
|
||||
if ( e.which == 13 ) e.preventDefault();
|
||||
});
|
||||
|
||||
$("#entryeditnav-form").on('submit', function(e){
|
||||
console.log('FILTER SUBMIT');
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
function get_compiled_message(type, headline, message) {
|
||||
return '<div class="alert alert-' + type + '" role="alert"><strong>'+ headline +'</strong> ' + message + '</div>';
|
||||
};
|
||||
|
||||
var sockets = io.connect();
|
||||
|
||||
function compile_data_for_socketio(custom) {
|
||||
var data = {
|
||||
pentrytype : "#{pentrytype}",
|
||||
day: "#{date.date}",
|
||||
pentry: "#{pentry.uuid}",
|
||||
pcalview : "#{pcalview}",
|
||||
data : custom
|
||||
};
|
||||
|
||||
if("#{pentrytype}" === "tevent") {
|
||||
data.parent_event = "#{parent_event_uuid}";
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function goto_mainpage() {
|
||||
$('body').loading();
|
||||
console.log("#{pentryfunction}");
|
||||
sockets.emit("get_rendered_#{pentryfunction}", compile_data_for_socketio({}));
|
||||
}
|
||||
|
||||
$(document).ready(function(){
|
||||
goto_mainpage();
|
||||
console.log('NOW EMITTING');
|
||||
});
|
||||
|
||||
function set_pastoralunit(data) {
|
||||
$('body').loading();
|
||||
sockets.emit('pentry_set_pastoralunit', compile_data_for_socketio({punit: data}));
|
||||
}
|
||||
|
||||
function add_location(data) {
|
||||
$('body').loading();
|
||||
sockets.emit('pentry_add_location', compile_data_for_socketio({location: data}));
|
||||
}
|
||||
|
||||
function edit_location(data) {
|
||||
$('body').loading();
|
||||
sockets.emit('pentry_edit_location', compile_data_for_socketio({location: data}));
|
||||
}
|
||||
|
||||
function add_involved(data) {
|
||||
$('body').loading();
|
||||
sockets.emit('pentry_add_involved', compile_data_for_socketio({involved: data}));
|
||||
}
|
||||
|
||||
function edit_involved(data) {
|
||||
$('body').loading();
|
||||
sockets.emit('pentry_edit_involved', compile_data_for_socketio({involved: data}));
|
||||
}
|
||||
|
||||
function add_role(data) {
|
||||
$('body').loading();
|
||||
sockets.emit('event_add_role', compile_data_for_socketio({role: data}));
|
||||
};
|
||||
|
||||
function edit_role(data) {
|
||||
$('body').loading();
|
||||
sockets.emit('event_edit_role', compile_data_for_socketio({role: data}));
|
||||
};
|
||||
|
||||
sockets.on('get_rendered_pentry_result', function(data) {
|
||||
console.log('get_rendered_pentry_result');
|
||||
|
||||
history.replaceState({direction: 'back'}, document.title, location.pathname);
|
||||
history.pushState({direction: 'mainpage'}, document.title, location.pathname);
|
||||
|
||||
$("#entryeditnav-form").empty();
|
||||
|
||||
$(".root").children(".subroot").remove();
|
||||
$(".root").append(data.html);
|
||||
$(".subroot > .new_flex_one").scrollTop(scroll_top);
|
||||
$("html, body").scrollTop(scroll_top_body);
|
||||
|
||||
scroll_top = 0;
|
||||
scroll_top_body = 0;
|
||||
|
||||
$('body').loading('stop');
|
||||
});
|
||||
|
||||
$('#confirmDelete').on('show.bs.modal', function (e) {
|
||||
$etype = $(e.relatedTarget).attr('data-delete-type');
|
||||
$ename = $(e.relatedTarget).attr('data-delete-name');
|
||||
$(this).find('.modal-body p').text("Sind Sie sicher, dass Sie \"" + $ename + "\" als " + $etype + " löschen wollen?");
|
||||
|
||||
console.log($etype);
|
||||
|
||||
if($etype === "Dienst") {
|
||||
var fieldset = $(e.relatedTarget).closest('fieldset');
|
||||
$(this).find('.modal-footer #confirm').data('fieldset', fieldset);
|
||||
}
|
||||
else {
|
||||
// Pass form reference to modal for submission on yes/ok
|
||||
var tr = $(e.relatedTarget).closest('tr');
|
||||
|
||||
$(this).find('.modal-footer #confirm').data('tr', tr);
|
||||
}
|
||||
$(this).find('.modal-footer #confirm').data('delete-type', $etype);
|
||||
});
|
||||
|
||||
$('#confirmDelete').find('.modal-footer #confirm').on('click', function() {
|
||||
$etype = $(this).data('delete-type');
|
||||
console.log($etype);
|
||||
if($etype === "Dienst") {
|
||||
var fieldset = $(this).data('fieldset');
|
||||
var uid = fieldset.data('uid');
|
||||
sockets.emit('event_remove_role', compile_data_for_socketio({role: uid}));
|
||||
}
|
||||
else {
|
||||
var tr = $(this).data('tr');
|
||||
var uid = tr.data('uid');
|
||||
|
||||
if($etype === "Ort") {
|
||||
sockets.emit('pentry_remove_location', compile_data_for_socketio({location: uid}));
|
||||
}
|
||||
else {
|
||||
var role = tr.data('role');
|
||||
sockets.emit('pentry_remove_involved', compile_data_for_socketio({role: role, involved: uid}));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
sockets.on('pentry_remove_involved_result', function(data) {
|
||||
if(data.result === "OK") {
|
||||
var tr = $('#confirmDelete').find('.modal-footer #confirm').data('tr');
|
||||
if(tr.is(":last-child") && tr.is(":first-child")) {
|
||||
var table = tr.closest("table");
|
||||
var t_parent = table.parent();
|
||||
table.remove();
|
||||
t_parent.append("<p>Keine Beteiligten ausgewählt.</p>");
|
||||
}
|
||||
else
|
||||
tr.remove();
|
||||
}
|
||||
|
||||
$('#confirmDelete').modal('hide');
|
||||
|
||||
$('#messageview_involved_' + data.role).append(data.html);
|
||||
});
|
||||
|
||||
sockets.on('pentry_remove_location_result', function(data) {
|
||||
if(data.result === "OK") {
|
||||
var tr = $('#confirmDelete').find('.modal-footer #confirm').data('tr');
|
||||
if(tr.is(":last-child") && tr.is(":first-child"))
|
||||
{
|
||||
var table = tr.closest("table");
|
||||
var t_parent = table.parent();
|
||||
table.remove();
|
||||
t_parent.append("<p>Keine Orte ausgewählt.</p>");
|
||||
}
|
||||
else
|
||||
tr.remove();
|
||||
}
|
||||
$('#confirmDelete').modal('hide');
|
||||
|
||||
$('#messageview_locations').append(data.html);
|
||||
});
|
||||
|
||||
sockets.on('event_remove_role_result',function(data){
|
||||
var fieldset = $('#confirmDelete').find('.modal-footer #confirm').data('fieldset');
|
||||
|
||||
var is_last_role = (fieldset.is(":last-child") && fieldset.is(":first-child"));
|
||||
var f_parent = fieldset.parent();
|
||||
|
||||
fieldset.remove();
|
||||
if(is_last_role)
|
||||
f_parent.append("<div class='col-sm-12'><p>Keine Dienste angegeben.</p></div>")
|
||||
|
||||
$('#confirmDelete').modal('hide');
|
||||
});
|
||||
|
||||
function save_tevent() {
|
||||
var event = {
|
||||
uuid : "#{pentry.uuid}",
|
||||
name : $("#edit_name").val(),
|
||||
name_secondary: $("#edit_name_secondary").val(),
|
||||
visibility: $("#combo_type").val(),
|
||||
end : $("#edit_end").val(),
|
||||
end_is_vague : $("#check_end_is_vague").prop("checked"),
|
||||
description : $("#area_description").val(),
|
||||
annotations : $("#area_annotations").val()
|
||||
};
|
||||
return event;
|
||||
}
|
||||
|
||||
function save_event() {
|
||||
event = save_tevent();
|
||||
event.start = $("#edit_begin").val();
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
function save_away() {
|
||||
var away = {
|
||||
uuid : "#{pentry.uuid}",
|
||||
reason: $("#edit_reason").val()
|
||||
};
|
||||
|
||||
return away;
|
||||
}
|
||||
|
||||
function save_keep_in_mind() {
|
||||
var keep_in_mind = {
|
||||
uuid : "#{pentry.uuid}",
|
||||
name : $("#edit_name").val(),
|
||||
description: $("#area_description").val()
|
||||
};
|
||||
|
||||
return keep_in_mind;
|
||||
}
|
||||
|
||||
function save_todo() {
|
||||
var todo = {
|
||||
uuid : "#{pentry.uuid}",
|
||||
name : $("#edit_name").val(),
|
||||
description: $("#area_description").val()
|
||||
};
|
||||
|
||||
return todo;
|
||||
}
|
||||
|
||||
function save_vehicle_use() {
|
||||
var vehicle_use = {
|
||||
uuid : "#{pentry.uuid}",
|
||||
name : $("#edit_name").val(),
|
||||
description: $("#area_description").val(),
|
||||
vehicle_id: $("#combo_vehicle").val()
|
||||
};
|
||||
|
||||
return vehicle_use;
|
||||
}
|
||||
|
||||
function save_and_goto(subpage, subpage_data) {
|
||||
$('body').loading();
|
||||
|
||||
var data = {};
|
||||
data["#{pentryfunction}"] = save_#{pentrytype}();
|
||||
sockets.emit('#{pentryfunction}_save', compile_data_for_socketio(data));
|
||||
|
||||
console.log('subpage: ', subpage);
|
||||
console.log('subbpage_data: ', subpage_data);
|
||||
|
||||
scroll_top = $(".subroot > .new_flex_one").scrollTop();
|
||||
scroll_top_body = $("html, body").scrollTop();
|
||||
switch(subpage) {
|
||||
case "select_pastoralunit":
|
||||
sockets.emit('render_pastoralunitselector', compile_data_for_socketio({}));
|
||||
break;
|
||||
case "add_predefined_location":
|
||||
sockets.emit('render_locationselector', compile_data_for_socketio({}));
|
||||
break;
|
||||
case "add_location":
|
||||
sockets.emit('render_locationeditor', compile_data_for_socketio({ type: "add" }));
|
||||
break;
|
||||
case "edit_location":
|
||||
sockets.emit('render_locationeditor', compile_data_for_socketio({ type: "edit", location: subpage_data.location }));
|
||||
break;
|
||||
case "add_actor":
|
||||
sockets.emit('render_actorselector', compile_data_for_socketio(subpage_data));
|
||||
break;
|
||||
case "add_role":
|
||||
sockets.emit('render_roleeditor', compile_data_for_socketio({type: "add"}));
|
||||
break;
|
||||
case "edit_role":
|
||||
sockets.emit('render_roleeditor', compile_data_for_socketio({type: "edit", role: subpage_data.role}));
|
||||
break;
|
||||
case "add_involved":
|
||||
sockets.emit('render_involvededitor', compile_data_for_socketio({type: "add", role: subpage_data.role}));
|
||||
break;
|
||||
case "edit_involved":
|
||||
sockets.emit('render_involvededitor', compile_data_for_socketio({type: "edit", role: subpage_data.role, involved: subpage_data.involved}));
|
||||
break;
|
||||
case "add_parishdbpersongroup":
|
||||
sockets.emit('render_parishdbpersongroupselector', compile_data_for_socketio({role: subpage_data.role}));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sockets.on('render_locationselector_result', function(data) {
|
||||
console.log('got locationselector');
|
||||
history.pushState({direction: 'locationselector'}, document.title, location.pathname);
|
||||
$(".root").children(".subroot").remove();
|
||||
$(".root").append(data.html);
|
||||
$("html, body").scrollTop(0);
|
||||
$(".root").scrollTop(0);
|
||||
$('body').loading('stop');
|
||||
});
|
||||
|
||||
sockets.on('render_locationeditor_result', function(data) {
|
||||
console.log('got locationeditor');
|
||||
history.pushState({direction: 'locationeditor'}, document.title, location.pathname);
|
||||
$(".root").children(".subroot").remove();
|
||||
$(".root").append(data.html);
|
||||
$("html, body").scrollTop(0);
|
||||
$(".root").scrollTop(0);
|
||||
$('body').loading('stop');
|
||||
});
|
||||
|
||||
sockets.on('render_pastoralunitselector_result', function(data) {
|
||||
console.log('got pastoralunitsecelcotr');
|
||||
history.pushState({direction: 'pastoralunitselector'}, document.title, location.pathname);
|
||||
$(".root").children(".subroot").remove();
|
||||
$(".root").append(data.html);
|
||||
$("html, body").scrollTop(0);
|
||||
$(".root").scrollTop(0);
|
||||
$('body').loading('stop');
|
||||
});
|
||||
|
||||
sockets.on('render_actorselector_result', function(data) {
|
||||
console.log('got actorselector');
|
||||
history.pushState({direction: 'actorselector'}, document.title, location.pathname);
|
||||
$(".root").children(".subroot").remove();
|
||||
$(".root").append(data.html);
|
||||
$("html, body").scrollTop(0);
|
||||
$(".root").scrollTop(0);
|
||||
$('body').loading('stop');
|
||||
});
|
||||
|
||||
function show_searchbar(functiontocall) {
|
||||
$("#entryeditnav-form").append("<div class='input-group'><div class='input-group-addon'><span class='glyphicon glyphicon-search'></span></div><input class='form-control' type='text' placeholder='Suche' style='display: inline;' oninput='" + functiontocall + "'></input></div>");
|
||||
}
|
||||
|
||||
/*function show_submitbutton(id, functioncall, extrahtml) {
|
||||
console.log(functioncall);
|
||||
$("#entryeditnav-form").append('<button style="display: inline-block;" class="btn btn-success disabled" type="button" id="'+id+'" ' + extrahtml + ' onclick="' + functioncall + '"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span></button>');
|
||||
}*/
|
||||
|
||||
sockets.on('render_parishdbpersongroupselector_result', function(data) {
|
||||
console.log('got parishdbpersongroupselector');
|
||||
history.pushState({direction: 'parishdbpersongroupselector'}, document.title, location.pathname);
|
||||
$(".root").children(".subroot").remove();
|
||||
$(".root").append(data.html);
|
||||
$("html, body").scrollTop(0);
|
||||
$(".root").scrollTop(0);
|
||||
$('body').loading('stop');
|
||||
});
|
||||
|
||||
sockets.on('render_involvededitor_result', function(data) {
|
||||
console.log('got involvededitor');
|
||||
history.pushState({direction: 'involvededitor'}, document.title, location.pathname);
|
||||
$(".root").children(".subroot").remove();
|
||||
$(".root").append(data.html);
|
||||
$("html, body").scrollTop(0);
|
||||
$(".root").scrollTop(0);
|
||||
$('body').loading('stop');
|
||||
});
|
||||
|
||||
sockets.on('render_roleeditor_result', function(data) {
|
||||
console.log('got roleeditor');
|
||||
history.pushState({direction: 'roleeditor'}, document.title, location.pathname);
|
||||
$(".root").children(".subroot").remove();
|
||||
$(".root").append(data.html);
|
||||
$("html, body").scrollTop(0);
|
||||
$(".root").scrollTop(0);
|
||||
$('body').loading('stop');
|
||||
});
|
||||
|
||||
// HANDLE SIMPLE BACK
|
||||
// history.replaceState({direction: 'back'}, document.title, location.pathname);
|
||||
// history.pushState({direction: 'mainpage'}, document.title, location.pathname);
|
||||
window.addEventListener("popstate", function(e) {
|
||||
console.log(e.state);
|
||||
if(e.state !== null) {
|
||||
if(e.state.direction === "back") {
|
||||
history.replaceState(null, document.title, location.pathname);
|
||||
setTimeout(function(){
|
||||
location.replace("#{pentry_href}/cancel?pcalview=#{pcalview}");
|
||||
},0);
|
||||
}
|
||||
if(e.state.direction === "mainpage")
|
||||
goto_mainpage();
|
||||
}
|
||||
}, false);
|
||||
|
||||