diff --git a/dist/bundle.js b/dist/bundle.js new file mode 100644 index 0000000..9436508 --- /dev/null +++ b/dist/bundle.js @@ -0,0 +1,171 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/js-helper/dist/client/ViewHelper.js": +/*!**********************************************************!*\ + !*** ./node_modules/js-helper/dist/client/ViewHelper.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ViewHelper = void 0;\nclass ViewHelper {\n /**\n * Entfernt alle Children eines Elements\n *\n * @param element\n * @returns {Node}\n */\n static removeAllChildren(element) {\n if (element instanceof Node) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n }\n return element;\n }\n /**\n * Moves the child-Nodes from one element to another\n * @param from\n * @param to\n * @returns {*}\n */\n static moveChildren(from, to) {\n let children = [];\n //Zwischenspeichern der Children, da removeChild die forEach-Schleife durcheinander bringt\n from.childNodes.forEach(child => {\n children.push(child);\n });\n children.forEach(child => {\n from.removeChild(child);\n to.appendChild(child);\n });\n return to;\n }\n static insertAfter(newChild, referenceChild) {\n const parent = referenceChild.parentNode;\n if (parent) {\n if (parent.lastChild === referenceChild) {\n parent.appendChild(newChild);\n }\n else {\n parent.insertBefore(newChild, referenceChild.nextSibling);\n }\n return true;\n }\n return false;\n }\n}\nexports.ViewHelper = ViewHelper;\n//# sourceMappingURL=ViewHelper.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/client/ViewHelper.js?"); + +/***/ }), + +/***/ "./node_modules/js-helper/dist/shared/Helper.js": +/*!******************************************************!*\ + !*** ./node_modules/js-helper/dist/shared/Helper.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Helper = void 0;\n/**\n * Eine Klasse mit häufig genutzten, nützlichen Funktionen\n */\nconst JsonHelper_1 = __webpack_require__(/*! ./JsonHelper */ \"./node_modules/js-helper/dist/shared/JsonHelper.js\");\nclass Helper {\n /**\n * Testet, ob eine Variable null oder Undefined ist\n *\n * @param variable\n * @returns {boolean}\n */\n static isNull(variable, ...args) {\n return Helper.isAllNull(...arguments);\n }\n static isAllNull(...args) {\n for (let i = 0; i < args.length; i++) {\n if (!(args[i] === null || args[i] === undefined)) {\n return false;\n }\n }\n return true;\n }\n static isAtLeastOneNull(...args) {\n return !Helper.isAllNull(...args);\n }\n /**\n * Testet, ob eine Variable nicht (null oder undefined) ist\n *\n * @param variable\n * @returns {boolean}\n */\n static isNotNull(variable, ...args) {\n return Helper.isAllNotNull(...arguments);\n }\n static isAllNotNull(...args) {\n for (let i = 0; i < args.length; i++) {\n if ((args[i] === null || args[i] === undefined)) {\n return false;\n }\n }\n return true;\n }\n static isAtLeastOneNotNull(...args) {\n return !Helper.isAllNull(...args);\n }\n /**\n * Gibt den ersten übergebenen Wert, der nicht (null oder undefined) ist, zurück\n *\n * @param val1\n * @param val2\n * @param args\n * @returns {*}\n */\n static nonNull(val1, val2, ...args) {\n for (let i = 0; i < arguments.length; i++) {\n if (Helper.isNotNull(arguments[i])) {\n return arguments[i];\n }\n }\n return null;\n }\n /**\n * Testet, ob der übergebene Index am Objekt gesetzt ist. Werden mehrere Indexes übergeben, so wird getestet,\n * ob die \"Index-Kette\" gesetzt ist.\n * Bsp.:\n * Helper.isSet({\"index1\":{\"index2\":value}}, \"index1\", \"index2\") ist wahr\n *\n * @param object\n * @param indexes\n * @returns {*}\n */\n static isSet(object, ...indexes) {\n if (Helper.isNotNull(object)) {\n if (indexes.length === 0) {\n return true;\n }\n return (Helper.isSet.apply(null, [object[indexes[0]]].concat(indexes.slice(1))));\n }\n return false;\n }\n /**\n * Testet, ob ein Wert null oder Leerstring, bzw nur aus leerzeichend bestehender String ist\n *\n * @param value\n * @returns {boolean}\n */\n static empty(value) {\n return (Helper.isNull(value) || (typeof value === 'string' && value.trim() === \"\"));\n }\n /**\n * Testet, ob ein Wert NICHT (null oder Leerstring, bzw nur aus leerzeichend bestehender String ist)\n *\n * @param value\n * @returns {boolean}\n */\n static notEmpty(value) {\n return !Helper.empty(value);\n }\n static arrayToObject(array, indexFunction) {\n let obj = {};\n array.forEach(val => {\n obj[indexFunction(val)] = val;\n });\n return obj;\n }\n /**\n * Deepcopies JSON\n *\n * @param obj\n * @returns {*}\n */\n static cloneJson(obj) {\n return JsonHelper_1.JsonHelper.deepCopy(obj);\n }\n /**\n * Erstellt ein FormData-Object von JSON-Data. Nützlich für fetch\n *\n * @param obj\n * @returns {FormData}\n */\n static formDataFromObject(obj) {\n let formData = new FormData();\n for (let k in obj) {\n formData.set(k, obj[k]);\n }\n return formData;\n }\n static shuffleArray(array) {\n let currentIndex = array.length, temporaryValue, randomIndex;\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n return array;\n }\n static padZero(n, width, z) {\n z = Helper.nonNull(z, '0');\n n = n + '';\n width = Helper.nonNull(width, 1);\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n }\n static deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a === \"object\" && typeof b === \"object\") {\n let keysOfB = Object.keys(b);\n let childrenDeepEqual = Object.keys(a).every((key) => {\n let index = keysOfB.indexOf(key);\n if (index < 0) {\n return false;\n }\n keysOfB.splice(index, 1);\n return Helper.deepEqual(a[key], b[key]);\n });\n return (childrenDeepEqual && keysOfB.length === 0);\n }\n return false;\n }\n //Ältere evtl nützliche Funktionen\n static htmlspecialcharsDecode(text) {\n const map = {\n '&': '&',\n '&': \"&\",\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '’': \"’\",\n '‘': \"‘\",\n '–': \"–\",\n '—': \"—\",\n '…': \"…\",\n '”': '”'\n };\n if (Helper.isNotNull(text) && typeof text.replace === \"function\") {\n return text.replace(/\\&[\\w\\d\\#]{2,5}\\;/g, function (m) {\n return map[m];\n });\n }\n return text;\n }\n /**\n * Inverts the key-Values for an object\n * @param obj\n * @return {*}\n */\n static invertKeyValues(obj) {\n let new_obj = {};\n for (let prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n new_obj[obj[prop]] = prop;\n }\n }\n return new_obj;\n }\n static asyncForEach(array, callback, runAsyncronous) {\n return __awaiter(this, void 0, void 0, function* () {\n runAsyncronous = Helper.nonNull(runAsyncronous, false);\n let validPromises = [];\n for (let i = 0; i < array.length; i++) {\n let index = i;\n let currentPromise = Promise.resolve(callback(array[index], index, array));\n if (!runAsyncronous) {\n yield currentPromise;\n }\n validPromises.push(currentPromise);\n }\n return Promise.all(validPromises);\n });\n }\n static escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\n }\n static objectForEach(object, callback) {\n Object.keys(object).forEach(key => {\n callback(object[key], key, object);\n });\n }\n static toArray(object) {\n let res = [];\n for (let k in object) {\n res.push(object[k]);\n }\n return res;\n }\n static imageUrlIsEmpty(url) {\n return (Helper.isNull(url) || url.trim() === \"\" || url.trim() === \"data:\");\n }\n static newPromiseWithResolve() {\n let resolver = null;\n let rejecter = null;\n let promise = new Promise((resolve, reject) => {\n resolver = resolve;\n rejecter = reject;\n });\n promise[\"resolve\"] = resolver;\n promise[\"reject\"] = rejecter;\n return promise;\n }\n static isMobileApp() {\n return (typeof device !== \"undefined\" && device.platform !== \"browser\");\n }\n static toSnakeCase(camelCase) {\n return camelCase.replace(/([A-Z])/g, function (find, something, position) { return ((position > 0) ? \"_\" : \"\") + find[0].toLowerCase(); });\n }\n static wait(timeout, result) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(r => {\n setTimeout(() => {\n r(result);\n }, timeout);\n });\n });\n }\n static timeout(time, otherPromise, timeoutResult) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.race([otherPromise, Helper.wait(time).then(() => {\n if (timeoutResult === undefined) {\n return Promise.reject();\n }\n else {\n return timeoutResult;\n }\n })]);\n });\n }\n}\nexports.Helper = Helper;\n//# sourceMappingURL=Helper.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared/Helper.js?"); + +/***/ }), + +/***/ "./node_modules/js-helper/dist/shared/JsonHelper.js": +/*!**********************************************************!*\ + !*** ./node_modules/js-helper/dist/shared/JsonHelper.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonHelper = void 0;\nconst Helper_1 = __webpack_require__(/*! ./Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nclass JsonHelper {\n static deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return false;\n }\n // array deepEqual\n if (a instanceof Array && b instanceof Array && a.length === b.length) {\n return a[\"every\"]((obj, i) => {\n return JsonHelper.deepEqual(obj, b[i]);\n });\n }\n //date deepEqual\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n // object deep copy\n if (typeof a === \"object\" && typeof b === \"object\") {\n let aKeys = Object.keys(a);\n let bKeys = Object.keys(b);\n return aKeys.length === bKeys.length && aKeys[\"every\"]((key) => {\n return Helper_1.Helper.isNotNull(b[key]) && JsonHelper.deepEqual(a[key], b[key]);\n });\n }\n //else is false (or not handled)\n return false;\n }\n /**\n * Deepcopies JSON\n *\n * @param obj\n * @returns {*}\n */\n static deepCopy(obj) {\n // https://stackoverflow.com/questions/4120475/how-to-create-and-clone-a-json-object/17502990#17502990\n let i;\n // basic type deep copy\n if (Helper_1.Helper.isNull(obj) || typeof obj !== 'object') {\n return obj;\n }\n // array deep copy\n if (obj instanceof Array) {\n let cloneA = [];\n for (i = 0; i < obj.length; ++i) {\n cloneA[i] = JsonHelper.deepCopy(obj[i]);\n }\n return cloneA;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n // object deep copy\n let cloneO = {};\n for (i in obj) {\n cloneO[i] = JsonHelper.deepCopy(obj[i]);\n }\n return cloneO;\n }\n static deepAssign(...objects) {\n if (objects.length > 0 && Array.isArray(objects)) {\n const result = [];\n objects.forEach(arr => result.push(...arr));\n return result;\n }\n const resultObj = {};\n objects.forEach(obj => {\n for (let i in obj) {\n if (resultObj[i] && typeof obj[i] === \"object\" && typeof resultObj[i] === \"object\") {\n resultObj[i] = JsonHelper.deepAssign(resultObj[i], obj[i]);\n }\n else {\n resultObj[i] = obj[i];\n }\n }\n });\n return resultObj;\n }\n static getDiff(a, b) {\n const result = {\n changed: {},\n added: {},\n removed: [],\n };\n // if (Array.isArray(a) && Array.isArray(b)){\n // const lengthA = a.length;\n // const lengthB = b.length;\n //\n // const minLength = Math.min(lengthA, lengthB);\n // for (let i = 0; i < minLength; i++){\n // const\n // }\n // }\n if ((typeof a !== \"object\" || typeof b !== \"object\")\n && (!Array.isArray(a) && !Array.isArray(b))) {\n if (a === b) {\n return null;\n }\n else {\n return { value: b };\n }\n }\n let hasChanged = false;\n let hasRemoved = false;\n let hasAdded = false;\n for (let i in a) {\n if (i in b) {\n const newVal = JsonHelper.getDiff(a[i], b[i]);\n if (newVal !== null) {\n result.changed[i] = newVal;\n hasChanged = true;\n }\n }\n else {\n result.removed.push(i);\n hasRemoved = true;\n }\n }\n for (let i in b) {\n if (!(i in a)) {\n result.added[i] = b[i];\n hasAdded = true;\n }\n }\n if (hasRemoved || hasAdded || hasChanged) {\n return result;\n }\n else {\n return null;\n }\n }\n static applyDiff(obj, diff) {\n if (!Array.isArray(diff.removed)) {\n debugger;\n }\n Object.keys(diff.changed).forEach(key => {\n if (\"value\" in diff.changed[key]) {\n obj[key] = diff.changed[key].value;\n }\n else {\n obj[key] = JsonHelper.applyDiff(obj[key], diff.changed[key]);\n }\n });\n diff.removed.forEach(rem => delete obj[rem]);\n Object.keys(diff.added).forEach(key => obj[key] = diff.added[key]);\n return obj;\n }\n}\nexports.JsonHelper = JsonHelper;\n//# sourceMappingURL=JsonHelper.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared/JsonHelper.js?"); + +/***/ }), + +/***/ "./src/client/js/CircleManager.js": +/*!****************************************!*\ + !*** ./src/client/js/CircleManager.js ***! + \****************************************/ +/*! exports provided: CircleManager */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CircleManager\", function() { return CircleManager; });\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! js-helper/dist/client/ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\");\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nclass CircleManager {\n\n constructor(listSection, tableSection) {\n this._members = [];\n this._week = 0;\n\n this._inputTemplate = listSection.querySelector(\"#input-template\");\n this._inputTemplate.remove();\n this._inputTemplate.removeAttribute(\"id\");\n this._listContainer = listSection.querySelector(\"#list-container\");\n listSection.querySelector(\"#add-button\").addEventListener(\"click\", () => this.addMember());\n\n this._tableTemplate = tableSection.querySelector(\"#table-template\");\n this._tableTemplate.remove();\n this._tableTemplate.removeAttribute(\"id\");\n this._tableContainer = tableSection.querySelector(\"#table-container\");\n\n this._weekInput = tableSection.querySelector(\"#week-input\");\n tableSection.querySelector(\"#next-week\").addEventListener(\"click\", () => this.setWeek(this._week + 1));\n tableSection.querySelector(\"#previous-week\").addEventListener(\"click\", () => this.setWeek(this._week - 1));\n // this._weekInput.addEventListener(\"change\", this.setWeek(this._weekInput.value));\n this.load();\n this.setWeek(this._week);\n }\n\n setWeek(newWeek) {\n newWeek = parseInt(newWeek);\n if (!isNaN(newWeek)) {\n newWeek = Math.max(newWeek, 0);\n this._week = newWeek;\n this._weekInput.innerText = (this._week + 1);\n this.updateTables();\n this.save();\n }\n }\n\n save(){\n console.log(\"saving...\");\n localStorage.setItem(\"list\", JSON.stringify({\"week\": this._week, \"members\": this._members}));\n }\n\n load(){\n const jsonSavedata = localStorage.getItem(\"list\");\n console.log(\"liste\", jsonSavedata);\n if (jsonSavedata){\n const data = JSON.parse(jsonSavedata);\n this._week = data.week;\n this._members = data.members;\n this.updateList();\n this.updateTables();\n }\n }\n\n updateList() {\n js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_0__[\"ViewHelper\"].removeAllChildren(this._listContainer);\n this._members.forEach((member, id) => {\n const memberElement = this._inputTemplate.cloneNode(true);\n memberElement.querySelector(\".delete-button\").addEventListener(\"click\", () => this.deleteMember(id))\n\n const inputElem =\n memberElement.querySelector(\".name\");\n inputElem.value = member;\n inputElem.addEventListener(\"input\", () => {\n this._members[id] = inputElem.value;\n this.updateTables();\n this.save();\n });\n this._listContainer.appendChild(memberElement);\n })\n }\n\n deleteMember(index) {\n if (index >= 0 && index < this._members.length) {\n this._members.splice(index, 1);\n this.updateList();\n this.updateTables();\n this.save();\n }\n }\n\n addMember(name) {\n name = js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__[\"Helper\"].nonNull(name, \"\");\n this._members.push(name);\n this.updateList();\n this.updateTables();\n this.save();\n }\n\n updateTables() {\n if (this._members.length < 2) {\n return;\n }\n const tables = {};\n this._members.forEach((member, index) => {\n const listPrayers = [];\n const listPrayedBy = [];\n\n const otherMembers = this._members.filter((v, i) => i !== index);\n\n let prayersIndex = index - 1;\n let prayedIndex = index;\n\n const weekOffset = this._week * 7;\n prayersIndex += weekOffset;\n prayedIndex -= weekOffset;\n if (prayedIndex < 0) {\n prayedIndex += otherMembers.length * Math.floor(weekOffset / otherMembers.length);\n }\n\n for (let i = 0; i < 7; i++) {\n prayersIndex = (prayersIndex + 1) % otherMembers.length\n prayedIndex = (prayedIndex - 1 + otherMembers.length) % otherMembers.length;\n\n listPrayers.push(otherMembers[prayersIndex]);\n listPrayedBy.push(otherMembers[prayedIndex]);\n }\n\n tables[index] = {\"for\": listPrayers, \"by\": listPrayedBy}\n });\n\n js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_0__[\"ViewHelper\"].removeAllChildren(this._tableContainer);\n Object.keys(tables).forEach(memberIndex => {\n const tableElement = this._tableTemplate.cloneNode(true);\n tableElement.querySelector(\".name\").innerText = this._members[memberIndex];\n tables[memberIndex].for.forEach((otherMember, index) => {\n tableElement.querySelector(\".for-\" + index).innerText = otherMember;\n });\n tables[memberIndex].by.forEach((otherMember, index) => {\n tableElement.querySelector(\".by-\" + index).innerText = otherMember;\n });\n\n this._tableContainer.appendChild(tableElement);\n });\n }\n}\n\n\n//# sourceURL=webpack:///./src/client/js/CircleManager.js?"); + +/***/ }), + +/***/ "./src/client/js/index.js": +/*!********************************!*\ + !*** ./src/client/js/index.js ***! + \********************************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sass_index_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../sass/index.scss */ \"./src/client/sass/index.scss\");\n/* harmony import */ var _sass_index_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sass_index_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _CircleManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CircleManager */ \"./src/client/js/CircleManager.js\");\n\n\n\nconst listSegment = document.getElementById(\"list-section\");\nconst tableSegment = document.getElementById(\"table-section\");\n\nnew _CircleManager__WEBPACK_IMPORTED_MODULE_1__[\"CircleManager\"](listSegment, tableSegment);\n\n\n//# sourceURL=webpack:///./src/client/js/index.js?"); + +/***/ }), + +/***/ "./src/client/sass/index.scss": +/*!************************************!*\ + !*** ./src/client/sass/index.scss ***! + \************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/client/sass/index.scss?"); + +/***/ }), + +/***/ 0: +/*!**************************************!*\ + !*** multi ./src/client/js/index.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = __webpack_require__(/*! /home/silas/Projekte/web/prayercircle/src/client/js/index.js */\"./src/client/js/index.js\");\n\n\n//# sourceURL=webpack:///multi_./src/client/js/index.js?"); + +/***/ }) + +/******/ }); \ No newline at end of file diff --git a/dist/img/trashcan.svg b/dist/img/trashcan.svg new file mode 100644 index 0000000..4c2b312 --- /dev/null +++ b/dist/img/trashcan.svg @@ -0,0 +1,196 @@ + + + + diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..23cc12c --- /dev/null +++ b/dist/index.html @@ -0,0 +1,74 @@ + + +
+ + + +| + | Mo | +Di | +Mi | +Do | +Fr | +Sa | +So | +
|---|---|---|---|---|---|---|---|
| Ich bete für: | ++ | + | + | + | + | + | + |
| Für mich betet: | ++ | + | + | + | + | + | + |