Dmitry Telenkov 1 yıl önce
ebeveyn
işleme
056523bdaa

+ 5 - 0
.obsidian/community-plugins.json

@@ -0,0 +1,5 @@
+[
+  "habit-calendar",
+  "dataview",
+  "obsidian-emoji-toolbar"
+]

+ 10 - 1
.obsidian/hotkeys.json

@@ -1 +1,10 @@
-{}
+{
+  "obsidian-emoji-toolbar:emoji-picker:open-picker": [
+    {
+      "modifiers": [
+        "Alt"
+      ],
+      "key": "E"
+    }
+  ]
+}

+ 27 - 0
.obsidian/plugins/dataview/data.json

@@ -0,0 +1,27 @@
+{
+  "renderNullAs": "\\-",
+  "taskCompletionTracking": false,
+  "taskCompletionUseEmojiShorthand": false,
+  "taskCompletionText": "completion",
+  "taskCompletionDateFormat": "yyyy-MM-dd",
+  "recursiveSubTaskCompletion": false,
+  "warnOnEmptyResult": true,
+  "refreshEnabled": true,
+  "refreshInterval": 2500,
+  "defaultDateFormat": "MMMM dd, yyyy",
+  "defaultDateTimeFormat": "h:mm a - MMMM dd, yyyy",
+  "maxRecursiveRenderDepth": 4,
+  "tableIdColumnName": "File",
+  "tableGroupColumnName": "Group",
+  "showResultCount": true,
+  "allowHtml": true,
+  "inlineQueryPrefix": "=",
+  "inlineJsQueryPrefix": "$=",
+  "inlineQueriesInCodeblocks": true,
+  "enableInlineDataview": true,
+  "enableDataviewJs": true,
+  "enableInlineDataviewJs": true,
+  "prettyRenderInlineFields": true,
+  "prettyRenderInlineFieldsInLivePreview": true,
+  "dataviewJsKeyword": "dataviewjs"
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 7494 - 0
.obsidian/plugins/dataview/main.js


+ 10 - 0
.obsidian/plugins/dataview/manifest.json

@@ -0,0 +1,10 @@
+{
+  "id": "dataview",
+  "name": "Dataview",
+  "version": "0.5.64",
+  "minAppVersion": "0.13.11",
+  "description": "Complex data views for the data-obsessed.",
+  "author": "Michael Brenan <blacksmithgu@gmail.com>",
+  "authorUrl": "https://github.com/blacksmithgu",
+  "isDesktopOnly": false
+}

+ 146 - 0
.obsidian/plugins/dataview/styles.css

@@ -0,0 +1,146 @@
+/** Live Preview padding fixes, specifically for DataviewJS custom HTML elements. */
+.is-live-preview .block-language-dataviewjs > p, .is-live-preview .block-language-dataviewjs > span {
+    line-height: 1.0;
+}
+
+.block-language-dataview {
+    overflow-y: auto;
+}
+
+/*****************/
+/** Table Views **/
+/*****************/
+
+/* List View Default Styling; rendered internally as a table. */
+.table-view-table {
+    width: 100%;
+}
+
+.table-view-table > thead > tr, .table-view-table > tbody > tr {
+    margin-top: 1em;
+    margin-bottom: 1em;
+    text-align: left;
+}
+
+.table-view-table > tbody > tr:hover {
+    background-color: var(--table-row-background-hover);
+}
+
+.table-view-table > thead > tr > th {
+    font-weight: 700;
+    font-size: larger;
+    border-top: none;
+    border-left: none;
+    border-right: none;
+    border-bottom: solid;
+
+    max-width: 100%;
+}
+
+.table-view-table > tbody > tr > td {
+    text-align: left;
+    border: none;
+    font-weight: 400;
+    max-width: 100%;
+}
+
+.table-view-table ul, .table-view-table ol {
+    margin-block-start: 0.2em !important;
+    margin-block-end: 0.2em !important;
+}
+
+/** Rendered value styling for any view. */
+.dataview-result-list-root-ul {
+    padding: 0em !important;
+    margin: 0em !important;
+}
+
+.dataview-result-list-ul {
+    margin-block-start: 0.2em !important;
+    margin-block-end: 0.2em !important;
+}
+
+/** Generic grouping styling. */
+.dataview.result-group {
+    padding-left: 8px;
+}
+
+/*******************/
+/** Inline Fields **/
+/*******************/
+
+.dataview.inline-field-key {
+    padding-left: 8px;
+    padding-right: 8px;
+    font-family: var(--font-monospace);
+    background-color: var(--background-primary-alt);
+    color: var(--text-nav-selected);
+}
+
+.dataview.inline-field-value {
+    padding-left: 8px;
+    padding-right: 8px;
+    font-family: var(--font-monospace);
+    background-color: var(--background-secondary-alt);
+    color: var(--text-nav-selected);
+}
+
+.dataview.inline-field-standalone-value {
+    padding-left: 8px;
+    padding-right: 8px;
+    font-family: var(--font-monospace);
+    background-color: var(--background-secondary-alt);
+    color: var(--text-nav-selected);
+}
+
+/***************/
+/** Task View **/
+/***************/
+
+.dataview.task-list-item, .dataview.task-list-basic-item {
+    margin-top: 3px;
+    margin-bottom: 3px;
+    transition: 0.4s;
+}
+
+.dataview.task-list-item:hover, .dataview.task-list-basic-item:hover {
+    background-color: var(--text-selection);
+    box-shadow: -40px 0 0 var(--text-selection);
+    cursor: pointer;
+}
+
+/*****************/
+/** Error Views **/
+/*****************/
+
+div.dataview-error-box {
+    width: 100%;
+    min-height: 150px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    border: 4px dashed var(--background-secondary);
+}
+
+.dataview-error-message {
+    color: var(--text-muted);
+    text-align: center;
+}
+
+/*************************/
+/** Additional Metadata **/
+/*************************/
+
+.dataview.small-text {
+    font-size: smaller;
+    color: var(--text-muted);
+    margin-left: 3px;
+}
+
+.dataview.small-text::before {
+	content: "(";
+}
+
+.dataview.small-text::after {
+	content: ")";
+}

+ 14 - 0
.obsidian/plugins/habit-calendar/data.json

@@ -0,0 +1,14 @@
+{
+  "startOfWeek": "1",
+  "monthFormat": "MM-YYYY",
+  "displayHead": true,
+  "enableHTML": true,
+  "enableMarkdown": true,
+  "Sunday": "SUN",
+  "Monday": "MON",
+  "Tuesday": "TUE",
+  "Wednesday": "WED",
+  "Thursday": "THU",
+  "Friday": "FRI",
+  "Saturday": "SAT"
+}

+ 367 - 0
.obsidian/plugins/habit-calendar/main.js

@@ -0,0 +1,367 @@
+/*
+THIS IS A GENERATED/BUNDLED FILE BY ROLLUP
+if you want to view the source visit the plugins github repository
+*/
+
+'use strict';
+
+var obsidian = require('obsidian');
+
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+function __awaiter(thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+}
+
+const DEFAULT_SETTINGS = {
+    startOfWeek: '0',
+    monthFormat: 'YYYY-MM',
+    displayHead: true,
+    enableHTML: false,
+    enableMarkdown: true,
+    Sunday: 'SUN',
+    Monday: 'MON',
+    Tuesday: 'TUE',
+    Wednesday: 'WED',
+    Thursday: 'THU',
+    Friday: 'FRI',
+    Saturday: 'SAT'
+};
+class HabitTrackerPlugin extends obsidian.Plugin {
+    onload() {
+        return __awaiter(this, void 0, void 0, function* () {
+            yield this.loadSettings();
+            this.addSettingTab(new HabitTrackerSettingTab(this.app, this));
+            //@ts-ignore
+            window.renderHabitCalendar = (el, dv, calendarParam) => {
+                dv.current().file.path;
+                let calendarData = param2CalendarData(dv, calendarParam);
+                let ctx = fromCalendarData(calendarData, this.settings);
+                const styles = ctx.tableWidth ? `width: ${ctx.tableWidth};` : '';
+                const table = createEl('table', { cls: 'habitt', attr: { style: styles } });
+                table.appendChild(renderHead(ctx));
+                table.appendChild(renderBody(ctx));
+                el.appendChild(table);
+            };
+        });
+    }
+    loadSettings() {
+        return __awaiter(this, void 0, void 0, function* () {
+            this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
+        });
+    }
+    saveSettings() {
+        return __awaiter(this, void 0, void 0, function* () {
+            yield this.saveData(this.settings);
+        });
+    }
+}
+function createContext(calendarData, settings) {
+    return {
+        startOfWeek: parseInt(settings.startOfWeek, 10),
+        startDay: 0,
+        monthDays: 0,
+        displayMonth: '',
+        tableWidth: '',
+        marks: new Map(),
+        settings,
+        error: '',
+        calendarData,
+        filepath: calendarData.filepath
+    };
+}
+function isTableData(data) {
+    return data.successful && data.value && data.value.type == 'table';
+}
+function param2CalendarData(dv, params) {
+    const calendarData = {
+        year: params.year,
+        month: params.month,
+        filepath: dv.current().file.path,
+        width: params.width || "100%",
+        entries: params.data,
+        format: params.format || 'text',
+        date_pattern: params.date_pattern || params.note_pattern || 'YYYY-MM-DD'
+    };
+    if (isTableData(params.data)) {
+        const headers = params.data.value.headers;
+        const values = params.data.value.values;
+        const dataDict = {};
+        for (let ri = 0; ri < values.length; ri += 1) {
+            // fill calendar day
+            const value = values[ri];
+            const link = value[0];
+            const date = obsidian.moment(link.fileName(), calendarData.date_pattern);
+            if (!date.isValid()) {
+                continue;
+            }
+            const dateString = link.fileName();
+            let entry = dataDict[dateString];
+            if (!entry) {
+                entry = {
+                    'date': dateString,
+                    'content': '',
+                    'link': link.path
+                };
+                dataDict[dateString] = entry;
+            }
+            // fill content
+            for (let ci = 1; ci < value.length; ci++) {
+                if (value[ci]) {
+                    // if the header contains a "|", use the string after "|" as label
+                    const splited = headers[ci].split("|");
+                    const label = splited[splited.length - 1];
+                    entry.content += `${label} ${value[ci]}\n`;
+                }
+            }
+        }
+        calendarData.entries = Object.values(dataDict);
+        calendarData.format = 'text';
+    }
+    return calendarData;
+}
+function fromCalendarData(calendarData, settings) {
+    const ctx = createContext(calendarData, settings);
+    const mon = obsidian.moment(`${calendarData.year}-${calendarData.month}`, 'YYYY-M');
+    if (!mon.isValid()) {
+        ctx.error = `Fail: Invalid Date ${calendarData.year}-${calendarData.month}`;
+        return ctx;
+    }
+    ctx.displayMonth = mon.format(settings.monthFormat);
+    ctx.startDay = mon.startOf('month').day();
+    ctx.monthDays = mon.endOf('month').date();
+    // table width (optional)
+    if (calendarData.width) {
+        ctx.tableWidth = calendarData.width;
+    }
+    // punch in
+    calendarData.entries.forEach(entry => {
+        const d = obsidian.moment(entry.date, calendarData.date_pattern);
+        if (d.year() == calendarData.year && d.month() + 1 == calendarData.month) {
+            ctx.marks.set(d.date(), entry);
+        }
+    });
+    return ctx;
+}
+function renderHead(ctx) {
+    const { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday } = ctx.settings;
+    const WEEK = [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday];
+    const thead = createEl('thead');
+    if (ctx.settings.displayHead) {
+        const tr = thead.createEl('tr');
+        tr.createEl('th', { cls: 'habitt-head', attr: { colspan: 7 }, text: ctx.displayMonth });
+    }
+    const tr = thead.createEl('tr');
+    for (let i = 0; i < 7; i++) {
+        tr.createEl('th', { cls: `habitt-th habitt-th-${i}`, text: WEEK[(i + ctx.startOfWeek) % 7] });
+    }
+    return thead;
+}
+function renderBody(ctx) {
+    const startHolds = ctx.startDay >= ctx.startOfWeek ? ctx.startDay - ctx.startOfWeek : 7 - ctx.startOfWeek + ctx.startDay;
+    let days = (new Array(ctx.monthDays)).fill(0).map((v, i) => i + 1);
+    const weeks = [];
+    if (startHolds) {
+        const startWeekDays = 7 - startHolds;
+        const firstWeek = (new Array(startHolds)).fill(0);
+        weeks.push(firstWeek.concat(days.slice(0, startWeekDays)));
+        days = days.slice(startWeekDays);
+    }
+    let i = 0;
+    while (i < days.length) {
+        weeks.push(days.slice(i, i + 7));
+        i = i + 7;
+    }
+    const lastWeek = weeks[weeks.length - 1];
+    if (lastWeek.length < 7) {
+        const pad = 7 - lastWeek.length;
+        for (let i = 0; i < pad; i++) {
+            lastWeek.push(0);
+        }
+    }
+    const tbody = createEl('tbody');
+    const { enableHTML } = ctx.settings;
+    for (let i = 0; i < weeks.length; i++) {
+        const tr = tbody.createEl('tr');
+        for (let j = 0; j < weeks[i].length; j++) {
+            const d = weeks[i][j];
+            const hasOwn = ctx.marks.has(d);
+            const td = tr.createEl('td', { cls: `habitt-td habitt-td--${d || 'disabled'} ${hasOwn ? 'habitt-td--checked' : ''}` });
+            const div = td.createDiv({ cls: 'habitt-c' });
+            // create link to file
+            if (hasOwn) {
+                const day_div = div.createDiv({ cls: 'habitt-date' });
+                const link = ctx.marks.get(d).link ? ctx.marks.get(d).link : ctx.marks.get(d).date;
+                day_div.createEl('a', { text: `${d || ''}`, cls: "internal-link", href: link, attr: { "data-href": link, "target": "_blank", "rel": "noopener" } });
+            }
+            else {
+                div.createDiv({ cls: 'habitt-date', text: `${d || ''}` });
+            }
+            const dots = div.createDiv({ cls: 'habitt-dots' });
+            if (hasOwn) {
+                const input = ctx.marks.get(d).content;
+                // treat as HTML
+                if (enableHTML && ctx.calendarData.format == 'html') {
+                    dots.innerHTML = `<div>${input}</div>`;
+                }
+                else if (ctx.settings.enableMarkdown && ctx.calendarData.format == 'markdown') {
+                    const md_div = dots.createDiv();
+                    obsidian.MarkdownRenderer.renderMarkdown(input, md_div, ctx.filepath, this);
+                }
+                else {
+                    dots.createDiv({ cls: 'habit-content', text: input });
+                }
+            }
+        }
+    }
+    return tbody;
+}
+class HabitTrackerSettingTab extends obsidian.PluginSettingTab {
+    constructor(app, plugin) {
+        super(app, plugin);
+        this.plugin = plugin;
+    }
+    display() {
+        const { containerEl } = this;
+        containerEl.empty();
+        // containerEl.createEl('h2', {text: 'Settings for my awesome plugin.'});
+        const weeks = {
+            '0': 'Sunday',
+            '1': 'Monday',
+            '2': 'Tuesday',
+            '3': 'Wednesday',
+            '4': 'Thursday',
+            '5': 'Friday',
+            '6': 'Saturday'
+        };
+        new obsidian.Setting(containerEl)
+            .setName('Start Of Week')
+            .setDesc('The day a week begins.')
+            .addDropdown(dropdown => dropdown
+            .addOptions(weeks)
+            .setValue(this.plugin.settings.startOfWeek)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.startOfWeek = value;
+            yield this.plugin.saveSettings();
+        })));
+        new obsidian.Setting(containerEl)
+            .setName('Display Table Header')
+            .addToggle(dropdown => dropdown
+            .setValue(this.plugin.settings.displayHead)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.displayHead = value;
+            yield this.plugin.saveSettings();
+        })));
+        new obsidian.Setting(containerEl)
+            .setName('Enable HTML')
+            .setDesc('Treat your input text as HTML. Be careful, it may cause DOM injection attacks')
+            .addToggle(dropdown => dropdown
+            .setValue(this.plugin.settings.enableHTML)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.enableHTML = value;
+            yield this.plugin.saveSettings();
+        })));
+        new obsidian.Setting(containerEl)
+            .setName('Enable Markdown Rendering')
+            .setDesc('Treat your input text as Markdown.')
+            .addToggle(dropdown => dropdown
+            .setValue(this.plugin.settings.enableMarkdown)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.enableMarkdown = value;
+            yield this.plugin.saveSettings();
+        })));
+        new obsidian.Setting(containerEl)
+            .setName('Month Format')
+            .setDesc('To format the month text which displays in the header')
+            .addText(text => text
+            .setValue(this.plugin.settings.monthFormat)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.monthFormat = value;
+            yield this.plugin.saveSettings();
+        })));
+        new obsidian.Setting(containerEl)
+            .setName('Sunday Label')
+            .setDesc('Default is SUN')
+            .addText(text => text
+            .setValue(this.plugin.settings.Sunday)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.Sunday = value || DEFAULT_SETTINGS.Sunday;
+            yield this.plugin.saveSettings();
+        })));
+        new obsidian.Setting(containerEl)
+            .setName('Monday Label')
+            .setDesc('Default is MON')
+            .addText(text => text
+            .setValue(this.plugin.settings.Monday)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.Monday = value || DEFAULT_SETTINGS.Monday;
+            yield this.plugin.saveSettings();
+        })));
+        new obsidian.Setting(containerEl)
+            .setName('Tuesday Label')
+            .setDesc('Default is TUE')
+            .addText(text => text
+            .setValue(this.plugin.settings.Tuesday)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.Tuesday = value || DEFAULT_SETTINGS.Tuesday;
+            yield this.plugin.saveSettings();
+        })));
+        new obsidian.Setting(containerEl)
+            .setName('Wednesday Label')
+            .setDesc('Default is WED')
+            .addText(text => text
+            .setValue(this.plugin.settings.Wednesday)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.Wednesday = value || DEFAULT_SETTINGS.Wednesday;
+            yield this.plugin.saveSettings();
+        })));
+        new obsidian.Setting(containerEl)
+            .setName('Thursday Label')
+            .setDesc('Default is THU')
+            .addText(text => text
+            .setValue(this.plugin.settings.Thursday)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.Thursday = value || DEFAULT_SETTINGS.Thursday;
+            yield this.plugin.saveSettings();
+        })));
+        new obsidian.Setting(containerEl)
+            .setName('Friday Label')
+            .setDesc('Default is FRI')
+            .addText(text => text
+            .setValue(this.plugin.settings.Friday)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.Friday = value || DEFAULT_SETTINGS.Friday;
+            yield this.plugin.saveSettings();
+        })));
+        new obsidian.Setting(containerEl)
+            .setName('Saturday Label')
+            .setDesc('Default is SAT')
+            .addText(text => text
+            .setValue(this.plugin.settings.Saturday)
+            .onChange((value) => __awaiter(this, void 0, void 0, function* () {
+            this.plugin.settings.Saturday = value || DEFAULT_SETTINGS.Saturday;
+            yield this.plugin.saveSettings();
+        })));
+    }
+}
+
+module.exports = HabitTrackerPlugin;

+ 10 - 0
.obsidian/plugins/habit-calendar/manifest.json

@@ -0,0 +1,10 @@
+{
+	"id": "habit-calendar",
+	"name": "Habit Calendar",
+	"version": "1.2.0",
+	"minAppVersion": "0.9.12",
+	"description": "Monthly Habit Calendar for DataviewJS. This plugin helps you render a calendar inside DataviewJS code block, showing your habit status within a month.",
+	"author": "Hedonihilist",
+	"authorUrl": "https://github.com/hedonihilist",
+	"isDesktopOnly": false
+}

+ 60 - 0
.obsidian/plugins/habit-calendar/styles.css

@@ -0,0 +1,60 @@
+.habitt {
+    border-collapse: collapse;
+    text-align: center;
+    table-layout: auto;
+    width: 100%;
+}
+.habitt-head {
+    font-size: .8em;
+    text-align: center !important;
+}
+.habitt td {
+    padding: 0 4px;
+    vertical-align: top;
+}
+.habitt .habitt-th {
+    color: var(--text-normal);
+    font-size: .6em;
+    text-align: center;
+}
+.habitt .habitt-td {
+    position: relative;
+    color: var(--text-muted);
+    font-size: .8em;
+    min-width: 2em;
+    min-height: 2em;
+    width: 14.28%;
+    opacity: .5;
+}
+.habitt-c {
+    position: relative;
+    height: 100%;
+}
+.habitt-date {
+    padding-top: 4px;
+}
+.habitt-date a {
+    display: block;
+}
+.habitt .habitt-td--disabled {
+    opacity: .5;
+    color: var(--text-muted);
+}
+.habitt .habitt-td--checked {
+    opacity: 1;
+    color: var(--text-normal);
+}
+.habitt-dots {
+    min-height: 20px;
+    padding: 0 0 4px;
+}
+.habitt-error {
+    background-color: var(--background-primary-alt);
+    padding: 1em;
+    margin: 0.5em 0;
+    overflow: auto;
+    border-radius: 0.3em;
+}
+.habit-content {
+    white-space: pre;
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 5137 - 0
.obsidian/plugins/obsidian-emoji-toolbar/main.js


+ 9 - 0
.obsidian/plugins/obsidian-emoji-toolbar/manifest.json

@@ -0,0 +1,9 @@
+{
+  "id": "obsidian-emoji-toolbar",
+  "name": "Emoji Toolbar",
+  "version": "0.4.1",
+  "description": "Quickly search for and insert emojis into your notes.",
+  "author": "oliveryh",
+  "authorUrl": "https://github.com/oliveryh/obsidian-emoji-toolbar",
+  "isDesktopOnly": false
+}

+ 505 - 0
.obsidian/plugins/obsidian-emoji-toolbar/styles.css

@@ -0,0 +1,505 @@
+img.emoji {
+  height: 1em;
+  width: 1em;
+  margin: 0 0.05em 0 0.1em;
+  vertical-align: -0.1em;
+  display: inline-block;
+}
+
+.emoji-mart,
+.emoji-mart * {
+  box-sizing: border-box;
+  line-height: 1.15;
+}
+
+.emoji-mart {
+  font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;
+  font-size: 16px;
+  display: inline-block;
+  color: #222427;
+  border: 1px solid #d9d9d9;
+  border-radius: 5px;
+  background: #fff;
+}
+
+.emoji-mart .emoji-mart-emoji {
+  padding: 6px !important;
+}
+
+.emoji-mart-bar {
+  border: 0 solid #d9d9d9;
+}
+.emoji-mart-bar:first-child {
+  border-bottom-width: 1px;
+  border-top-left-radius: 5px;
+  border-top-right-radius: 5px;
+}
+.emoji-mart-bar:last-child {
+  border-top-width: 1px;
+  border-bottom-left-radius: 5px;
+  border-bottom-right-radius: 5px;
+}
+
+.emoji-mart-anchors {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+  padding: 0 6px;
+  line-height: 0;
+}
+
+.emoji-mart-anchor {
+  position: relative;
+  display: block;
+  flex: 1 1 auto;
+  color: #858585;
+  text-align: center;
+  padding: 12px 4px !important;
+  overflow: hidden;
+  transition: color .1s ease-out;
+  margin: 0  !important;
+  box-shadow: none !important;
+  background: none !important;
+  border: none  !important;
+}
+.emoji-mart-anchor:focus { outline: 0 }
+.emoji-mart-anchor:hover,
+.emoji-mart-anchor:focus,
+.emoji-mart-anchor-selected {
+  color: #464646;
+}
+
+.emoji-mart-anchor-selected .emoji-mart-anchor-bar {
+  bottom: 0;
+}
+
+.emoji-mart-anchor-bar {
+  position: absolute;
+  bottom: -3px; left: 0;
+  width: 100%; height: 3px;
+  background-color: #464646;
+}
+
+.emoji-mart-anchors i {
+  display: inline-block;
+  width: 100%;
+  max-width: 22px;
+}
+
+.emoji-mart-anchors svg,
+.emoji-mart-anchors img {
+  fill: currentColor;
+  height: 18px;
+  width: 18px;
+}
+
+.emoji-mart-scroll {
+  overflow-y: scroll;
+  overflow-x: hidden;
+  height: 270px;
+  padding: 0 6px 6px 6px;
+  will-change: transform; /* avoids "repaints on scroll" in mobile Chrome */
+}
+
+.emoji-mart-search {
+  margin-top: 6px;
+  padding: 0 6px;
+  position: relative;
+}
+
+.emoji-mart-search input {
+  font-size: 16px;
+  display: block;
+  width: 100%;
+  padding: 5px 25px 6px 10px;
+  border-radius: 5px;
+  border: 1px solid #d9d9d9;
+  outline: 0;
+}
+
+.emoji-mart-search input,
+.emoji-mart-search input::-webkit-search-decoration,
+.emoji-mart-search input::-webkit-search-cancel-button,
+.emoji-mart-search input::-webkit-search-results-button,
+.emoji-mart-search input::-webkit-search-results-decoration {
+  /* remove webkit/blink styles for <input type="search">
+   * via https://stackoverflow.com/a/9422689 */
+  -webkit-appearance: none;
+}
+
+.emoji-mart-search-icon {
+  position: absolute;
+  top: 7px;
+  right: 11px;
+  z-index: 2;
+  padding: 2px 5px 1px;
+  border: none !important;
+  box-shadow: none !important;
+  background: none !important;
+}
+
+.emoji-mart-category .emoji-mart-emoji span {
+  z-index: 1;
+  position: relative;
+  text-align: center;
+  cursor: default;
+}
+
+.emoji-mart-category .emoji-mart-emoji:focus { outline: 0 }
+
+.emoji-mart-category .emoji-mart-emoji:hover:before, 
+.emoji-mart-category .emoji-mart-emoji:focus:before {
+  z-index: 0;
+  content: "";
+  position: absolute;
+  top: 0; left: 0;
+  width: 100%; height: 100%;
+  background-color: #c5c5c5;
+  border-radius: 100%;
+}
+
+.emoji-mart-category-label {
+  z-index: 2;
+  position: relative;
+  position: -webkit-sticky;
+  position: sticky;
+  top: 0;
+}
+
+.emoji-mart-category-label span {
+  display: block;
+  width: 100%;
+  font-weight: 500;
+  padding: 5px 6px;
+  background-color: #fff;
+  background-color: rgba(255, 255, 255, .95);
+}
+
+.emoji-mart-category-list {
+  border-spacing: 0;
+  margin: 0;
+  padding: 0;
+}
+
+.emoji-mart-category-list td {
+  margin: 0;
+  padding: 0;
+}
+
+.emoji-mart-emoji {
+  position: relative;
+  display: inline-block;
+  font-size: 0;
+  margin: 0 !important;
+  padding: 0 !important;
+  border: none !important;
+  background: none !important;
+  box-shadow: none !important;
+}
+
+.emoji-mart-emoji-native {
+  font-family: "Segoe UI Emoji", "Segoe UI Symbol", "Segoe UI", "Apple Color Emoji", "Twemoji Mozilla", "Noto Color Emoji", "Android Emoji";
+}
+
+.emoji-mart-no-results {
+  font-size: 14px;
+  text-align: center;
+  padding-top: 70px;
+  color: #858585;
+}
+.emoji-mart-no-results-img {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+  width: 50%;
+}
+.emoji-mart-no-results .emoji-mart-category-label {
+  display: none;
+}
+.emoji-mart-no-results .emoji-mart-no-results-label {
+  margin-top: .2em;
+}
+.emoji-mart-no-results .emoji-mart-emoji:hover:before {
+  content: none;
+}
+
+.emoji-mart-preview {
+  position: relative;
+  height: 70px;
+}
+
+.emoji-mart-preview-emoji,
+.emoji-mart-preview-data,
+.emoji-mart-preview-skins {
+  position: absolute;
+  top: 50%;
+  transform: translateY(-50%);
+}
+
+.emoji-mart-preview-emoji {
+  left: 12px;
+}
+
+.emoji-mart-preview-data {
+  left: 68px; right: 12px;
+  word-break: break-all;
+}
+
+.emoji-mart-preview-skins {
+  right: 30px;
+  text-align: right;
+}
+
+.emoji-mart-preview-skins.custom {
+  right: 10px;
+  text-align: right;
+}
+
+.emoji-mart-preview-name {
+  font-size: 14px;
+}
+
+.emoji-mart-preview-shortname {
+  font-size: 12px;
+  color: #888;
+}
+.emoji-mart-preview-shortname + .emoji-mart-preview-shortname,
+.emoji-mart-preview-shortname + .emoji-mart-preview-emoticon,
+.emoji-mart-preview-emoticon + .emoji-mart-preview-emoticon {
+  margin-left: .5em;
+}
+
+.emoji-mart-preview-emoticon {
+  font-size: 11px;
+  color: #bbb;
+}
+
+.emoji-mart-title span {
+  display: inline-block;
+  vertical-align: middle;
+}
+
+.emoji-mart-title .emoji-mart-emoji {
+  padding: 0;
+}
+
+.emoji-mart-title-label {
+  color: #999A9C;
+  font-size: 26px;
+  font-weight: 300;
+}
+
+.emoji-mart-skin-swatches {
+  font-size: 0;
+  padding: 2px 0;
+  border: 1px solid #d9d9d9;
+  border-radius: 12px;
+  background-color: #fff;
+}
+
+.emoji-mart-skin-swatches.custom {
+  font-size: 0;
+  border: none;
+  background-color: #fff;
+}
+
+.emoji-mart-skin-swatches.opened .emoji-mart-skin-swatch {
+  width: 16px;
+  padding: 0 2px;
+}
+
+.emoji-mart-skin-swatches.opened .emoji-mart-skin-swatch.selected:after {
+  opacity: .75;
+}
+
+.emoji-mart-skin-swatch {
+  display: inline-block;
+  width: 0;
+  vertical-align: middle;
+  transition-property: width, padding;
+  transition-duration: .125s;
+  transition-timing-function: ease-out;
+}
+
+.emoji-mart-skin-swatch:nth-child(1) { transition-delay: 0s }
+.emoji-mart-skin-swatch:nth-child(2) { transition-delay: .03s }
+.emoji-mart-skin-swatch:nth-child(3) { transition-delay: .06s }
+.emoji-mart-skin-swatch:nth-child(4) { transition-delay: .09s }
+.emoji-mart-skin-swatch:nth-child(5) { transition-delay: .12s }
+.emoji-mart-skin-swatch:nth-child(6) { transition-delay: .15s }
+
+.emoji-mart-skin-swatch.selected {
+  position: relative;
+  width: 16px;
+  padding: 0 2px;
+}
+
+.emoji-mart-skin-swatch.selected:after {
+  content: "";
+  position: absolute;
+  top: 50%; left: 50%;
+  width: 4px; height: 4px;
+  margin: -2px 0 0 -2px;
+  background-color: #fff;
+  border-radius: 100%;
+  pointer-events: none;
+  opacity: 0;
+  transition: opacity .2s ease-out;
+}
+
+.emoji-mart-skin-swatch.custom {
+  display: inline-block;
+  width: 0;
+  height: 38px;
+  overflow: hidden;
+  vertical-align: middle;
+  transition-property: width, height;
+  transition-duration: .125s;
+  transition-timing-function: ease-out;
+  cursor: default;
+}
+
+.emoji-mart-skin-swatch.custom.selected {
+  position: relative;
+  width: 36px;
+  height: 38px;
+  padding: 0 2px 0 0;
+}
+
+.emoji-mart-skin-swatch.custom.selected:after {
+  content: "";
+  width: 0;
+  height: 0;
+}
+
+.emoji-mart-skin-swatches.custom .emoji-mart-skin-swatch.custom:hover {
+  background-color: #f4f4f4;
+  border-radius: 10%;
+}
+
+.emoji-mart-skin-swatches.custom.opened .emoji-mart-skin-swatch.custom {
+  width: 36px;
+  height: 38px;
+  padding: 0 2px 0 0;
+}
+
+.emoji-mart-skin-swatches.custom.opened .emoji-mart-skin-swatch.custom.selected:after {
+  opacity: .75;
+}
+
+.emoji-mart-skin-text.opened {
+  display: inline-block;
+  vertical-align: middle;
+  text-align: left;
+  color: #888;
+  font-size: 11px;
+  padding: 5px 2px;
+  width: 95px;
+  height: 40px;
+  border-radius: 10%;
+  background-color: #fff;
+}
+
+.emoji-mart-skin {
+  display: inline-block;
+  width: 100%;
+  padding-top: 100%;
+  max-width: 12px;
+  border-radius: 100%;
+}
+
+.emoji-mart-skin-tone-1 { background-color: #ffc93a }
+.emoji-mart-skin-tone-2 { background-color: #fadcbc }
+.emoji-mart-skin-tone-3 { background-color: #e0bb95 }
+.emoji-mart-skin-tone-4 { background-color: #bf8f68 }
+.emoji-mart-skin-tone-5 { background-color: #9b643d }
+.emoji-mart-skin-tone-6 { background-color: #594539 }
+
+/* For screenreaders only, via https://stackoverflow.com/a/19758620 */
+.emoji-mart-sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+
+/*
+ * Dark mode styles
+ */
+
+.emoji-mart-dark {
+  color: #fff;
+  border-color: #555453;
+  background-color: #222;
+}
+
+.emoji-mart-dark .emoji-mart-bar {
+  border-color: #555453;
+}
+
+.emoji-mart-dark .emoji-mart-search input {
+  color: #fff;
+  border-color: #555453;
+  background-color: #2f2f2f;
+}
+
+.emoji-mart-dark .emoji-mart-search-icon svg {
+  fill: #fff;
+}
+
+.emoji-mart-category .emoji-mart-emoji {
+  background-color: unset !important;
+}
+
+.emoji-mart-anchor {
+  background-color: unset !important;
+}
+
+.emoji-mart-search-icon {
+  background-color: unset !important;
+}
+
+.emoji-mart-dark .emoji-mart-category .emoji-mart-emoji:hover:before,
+.emoji-mart-dark .emoji-mart-category .emoji-mart-emoji:focus:before {
+  background-color: #888;
+}
+
+.emoji-mart-dark .emoji-mart-category-label span {
+  background-color: #222;
+  color: #fff;
+}
+
+.emoji-mart-dark .emoji-mart-skin-swatches {
+  border-color: #555453;
+  background-color: #222;
+}
+
+.emoji-mart-dark .emoji-mart-anchor:hover,
+.emoji-mart-dark .emoji-mart-anchor:focus,
+.emoji-mart-dark .emoji-mart-anchor-selected {
+  color: #bfbfbf;
+}
+
+#emoji-modal {
+  padding: 0px;
+  min-width: unset;
+  width: unset !important;
+}
+
+#emoji-modal > .modal-content {
+  margin-top: 0px;
+}
+
+#emoji-modal > button {
+  background-color: unset;
+  border: 0px !important;
+  box-shadow: 0px !important;
+}
+
+#emoji-modal > .modal-close-button {
+  visibility: hidden;
+}

+ 27 - 25
.obsidian/workspace.json

@@ -4,40 +4,40 @@
     "type": "split",
     "children": [
       {
-        "id": "0724a9a43f5c4e0f",
+        "id": "9f5d5ca1dbbe7210",
         "type": "tabs",
         "children": [
           {
-            "id": "dec29921f810cc08",
+            "id": "2e32c5a6e9f28052",
             "type": "leaf",
             "state": {
               "type": "markdown",
               "state": {
-                "file": "Список литературы.md",
+                "file": "Тренировки и занятия.md",
                 "mode": "source",
                 "source": false
               }
             },
-            "group": "69db456116467310"
+            "group": "5cfac0e29502b01e"
           }
         ]
       },
       {
-        "id": "9f5d5ca1dbbe7210",
+        "id": "af790371e55e7c76",
         "type": "tabs",
         "children": [
           {
-            "id": "2e32c5a6e9f28052",
+            "id": "f4f8feb3f8a62cd0",
             "type": "leaf",
             "state": {
               "type": "markdown",
               "state": {
-                "file": "Список литературы.md",
-                "mode": "source",
+                "file": "Тренировки и занятия.md",
+                "mode": "preview",
                 "source": false
               }
             },
-            "group": "69db456116467310"
+            "group": "5cfac0e29502b01e"
           }
         ]
       }
@@ -105,7 +105,7 @@
             "state": {
               "type": "backlink",
               "state": {
-                "file": "Список литературы.md",
+                "file": "Тренировки и занятия.md",
                 "collapseAll": false,
                 "extraContext": false,
                 "sortOrder": "alphabetical",
@@ -137,26 +137,30 @@
   },
   "left-ribbon": {
     "hiddenItems": {
-      "switcher:Меню быстрого перехода": false,
-      "graph:Граф": false,
-      "canvas:Создать новый холст": false,
-      "command-palette:Открыть палитру команд": false,
-      "markdown-importer:Импорт Markdown-файлов": false
+      "switcher:Open quick switcher": false,
+      "graph:Open graph view": false,
+      "canvas:Create new canvas": false,
+      "command-palette:Open command palette": false,
+      "markdown-importer:Open format converter": false
     }
   },
-  "active": "dec29921f810cc08",
+  "active": "2e32c5a6e9f28052",
   "lastOpenFiles": [
-    "linux/Arbiter.md",
-    "Список литературы.md",
-    "Кодинг.md",
-    "web hardcore",
-    "Разное.md",
     "Счета.md",
-    "Artery testing.md",
+    "Тренировки и занятия.md",
+    "TODO.md",
     "links.md",
+    "Разное.md",
+    "Кодинг.md",
+    "bt67xx/common.md",
     "linux/linux common.md",
+    "linux/Raspberry PI.md",
+    "2024-01-03.md",
     "proGit.md",
-    "TODO.md",
+    "Список литературы.md",
+    "Artery testing.md",
+    "linux/Arbiter.md",
+    "web hardcore",
     "metrolog/M3 artery + stm32.md",
     "BT7000/BT-7000 Artery.md",
     "linux/Tmux.md",
@@ -164,8 +168,6 @@
     "docs/CAN megmeet Communication Protocol.pdf",
     "docs/3KW Rectifier Can Communication Protocal V2 20220818 (1).pdf",
     "docs/LT8920datasheetEngversion201701191.pdf",
-    "bt67xx/common.md",
-    "linux/Raspberry PI.md",
     "metrolog/Текучка Метролог.md",
     "metrolog/IRQ + FreeRTOS.md",
     "FlyElectronics/LED Controller.md",

BIN
Database.kdbx


+ 4 - 2
bt67xx/common.md

@@ -1,6 +1,8 @@
+Общее:
+* Проект ==bt-67xx_universal_hw==
 Сборка:
-Опция DEBUG=0 включает защиту flash памяти контроллера.
-Релиз выпускается с DEBUG=0
+* Опция DEBUG=0 включает защиту flash памяти контроллера.
+* Релиз выпускается с DEBUG=0
 ```bash
 $ make HARDWARE=bt6711_v1 VERBOSE=1 DEBUG=1 PRINTF=custom MAC=EC-4C-4D-00-78-89 CROSS="/home/dtelenkov/soft/tools/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/arm-none-eabi"
 ```

+ 0 - 1
Разное.md

@@ -62,7 +62,6 @@ https://gitlab.com/omprussia
 Поддерживается Qt 5.6
 Приложение как rpm пакет
 
-28 ноября - начало курса
 
 
 

+ 20 - 0
Счета.md

@@ -1,3 +1,23 @@
+# 2024
+#### <font color = "MediumSeaGreen">Январь</font>
+##### <font color = "#1D8571">Коммунальные услуги</font>
+- [x] Широкая электричество 576 
+- [x] Широкая платежка (декабрь 9510)
+- [ ] Подрезково (декабрь )
+- [x] Нина электричество + ТКО на планерной (1571)
+
+##### <font color = "#1D8571">Передача показаний с 15-ого числа</font>
+- [ ] Широкая вода. хол - , гор - 
+- [ ] Широкая электричество  
+- [ ] Подрезково: хол , гор , эл  (Новый счетчик горячей воды, передал по старому )
+- [ ] Химки: 583 - , 473 - , 450 - , 402 - , эл -  (Проблемы по 402)
+- [ ] Планерная Нина электричество: 
+- [ ] Планерная Батя электричество: 
+##### <font color = "#1D8571">Дополнительно</font>
+- [ ] Отдать Нине ()
+- [ ] Домашний интернет ()
+- [x] Сотовый телефон (700)
+- [ ] Продленка 
 # 2023
 #### <font color = "MediumSeaGreen">Декабрь</font>
 ##### <font color = "#1D8571">Коммунальные услуги</font>

+ 177 - 0
Тренировки и занятия.md

@@ -0,0 +1,177 @@
+#### <font color = "MediumSeaGreen">Январь 2024</font>
+```dataviewjs
+renderHabitCalendar(this.container, dv, {
+  year: 2024,
+  month: 1,
+  format: 'html',   // set the format to html
+  data: [ 
+  {
+    date: '2024-01-02',
+    content: '🦵', 
+  },
+  {
+    date: '2024-01-03',
+    content: '💪solo \r  ', 
+  },
+  {
+    date: '2024-01-05',
+    content: '💪solo \r  ', 
+  },
+  {
+    date: '2024-01-08',
+    content: '💪\r🦵',
+  },
+  {
+    date: '2024-01-09',
+    content: '🏊‍♀️💲1600\r🇬🇧',
+  },
+  ]
+})
+```
+#### <font color = "MediumSeaGreen">Декабрь 2023</font>
+```dataviewjs
+renderHabitCalendar(this.container, dv, {
+  year: 2023,
+  month: 12,
+  format: 'html',
+  data: [ 
+  {
+    date: '2023-12-05',
+    content: '🇬🇧', 
+  },
+  {
+    date: '2023-12-07',
+    content: '💪\r🇬🇧', 
+  },
+  {
+    date: '2023-121-10',
+    content: '💪solo \r  ', 
+  },
+  {
+    date: '2023-12-12',
+    content: '💪\r🇬🇧💲10000', 
+  },
+  {
+    date: '2023-12-13',
+    content: '🦵💲21000', 
+  },
+  {
+    date: '2023-12-14',
+    content: '💪\r🇬🇧',
+  },
+  {
+    date: '2023-12-16',
+    content: '🦵', 
+  },
+  {
+    date: '2023-12-17',
+    content: '💪solo', 
+  },
+  {
+    date: '2023-12-19',
+    content: '💪\r🇬🇧', 
+  },
+  {
+    date: '2023-12-20',
+    content: '🦵', 
+  },
+  {
+    date: '2023-12-21',
+    content: '💪solo\r🇬🇧', 
+  },
+  {
+    date: '2023-12-23',
+    content: '💪\r🦵', 
+  },
+  {
+    date: '2023-12-26',
+    content: '💪', 
+  },
+  {
+    date: '2023-12-27',
+    content: '🦵\r🇬🇧', 
+  },
+  {
+    date: '2023-12-28',
+    content: '💪', 
+  },
+  {
+    date: '2023-12-29',
+    content: '🇬🇧', 
+  },
+  {
+    date: '2023-12-30',
+    content: '🦵', 
+  },
+  ]
+})
+```
+#### <font color = "MediumSeaGreen">Ноябрь 2023</font>
+```dataviewjs
+renderHabitCalendar(this.container, dv, {
+  year: 2023,
+  month: 11,
+  format: 'html',
+  data: [ 
+  {
+    date: '2023-11-02',
+    content: '💪', 
+  },
+  {
+    date: '2023-11-04',
+    content: '💪solo', 
+  },
+  {
+    date: '2023-11-06',
+    content: '🇬🇧💲1000', 
+  },
+  {
+    date: '2023-11-07',
+    content: '💪\r🇬🇧', 
+  },
+  {
+    date: '2023-11-09',
+    content: '💪', 
+  },
+  {
+    date: '2023-11-12',
+    content: '💪solo', 
+  },
+  {
+    date: '2023-11-14',
+    content: '🇬🇧', 
+  },
+  {
+    date: '2023-11-15',
+    content: '💪', 
+  },
+  {
+    date: '2023-11-16',
+    content: '💪\r🇬🇧', 
+  },
+  {
+    date: '2023-11-19',
+    content: '💪solo', 
+  },
+  {
+    date: '2023-11-21',
+    content: '💪\r🇬🇧', 
+  },
+  {
+    date: '2023-11-23',
+    content: '💪\r🇬🇧', 
+  },
+  {
+    date: '2023-11-28',
+    content: '💪\r🇬🇧', 
+  },
+  {
+    date: '2023-11-30',
+    content: '💪💲21000\r🇬🇧', 
+  },
+  ]
+})
+```
+
+
+

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor