main
iOS 3 years ago
parent 7e50515993
commit 7853109d74

@ -24,6 +24,5 @@
"obsidian42-brat",
"code-block-copy",
"obsidian-lineup-builder",
"emoji-shortcodes",
"obsidian-crypto-lookup"
]

File diff suppressed because one or more lines are too long

@ -2,7 +2,7 @@
"id": "buttons",
"name": "Buttons",
"description": "Create Buttons in your Obsidian notes to run commands, open links, and insert templates",
"version": "0.4.16",
"version": "0.4.15",
"author": "shabegom",
"authorUrl": "https://shbgm.ca",
"isDesktopOnly": false,

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "dataview",
"name": "Dataview",
"version": "0.4.20",
"version": "0.4.19",
"minAppVersion": "0.12.0",
"description": "Complex data views for the data-obsessed.",
"author": "Michael Brenan <blacksmithgu@gmail.com>",

@ -93,10 +93,9 @@
},
"syntaxHighlight": false,
"copyButton": true,
"version": "6.5.1",
"version": "6.4.1",
"autoCollapse": false,
"defaultCollapseType": "open",
"syncLinks": true,
"enableMarkdownProcessor": false,
"injectColor": true
"enableMarkdownProcessor": false
}

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "obsidian-admonition",
"name": "Admonition",
"version": "6.5.1",
"version": "6.4.1",
"minAppVersion": "0.11.0",
"description": "Admonition block-styled content for Obsidian.md",
"author": "Jeremy Valentine",

@ -231,14 +231,6 @@ input.is-invalid {
width: 1em;
}
.admonition-color-settings .setting-item-control {
gap: 1rem;
}
.admonition-color-settings input[type="color"]:disabled {
opacity: 0.75;
cursor: not-allowed;
}
/** Internal */
.admonition li.task-list-item.is-checked p {

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "obsidian-dice-roller",
"name": "Dice Roller",
"version": "7.1.5",
"version": "7.1.4",
"minAppVersion": "0.12.15",
"description": "Inline dice rolling for Obsidian.md",
"author": "Jeremy Valentine",

File diff suppressed because one or more lines are too long

@ -4,6 +4,6 @@
"author": "aidurber",
"description": "An Obsidian plugin to generate Tables of Contents that stay up to date with your document outline.",
"minAppVersion": "0.11.0",
"version": "0.0.17",
"version": "0.0.16",
"repo": "aidurber/obsidian-plugin-dynamic-toc"
}

File diff suppressed because one or more lines are too long

@ -1,8 +1,8 @@
{
"id": "obsidian-metatable",
"name": "Metatable",
"version": "0.10.4",
"minAppVersion": "0.12.19",
"version": "0.10.3",
"minAppVersion": "0.12.3",
"description": "Displays the full frontmatter as a table.",
"author": "Arnau Siches",
"authorUrl": "https://www.seachess.net/",

File diff suppressed because it is too large Load Diff

@ -1,7 +1,7 @@
{
"id": "obsidian42-brat",
"name": "Obsidian42 - BRAT",
"version": "0.5.6",
"version": "0.5.0",
"minAppVersion": "0.9.12",
"description": "Easily install a beta version of a plugin for testing.",
"author": "TfTHacker",

@ -9,7 +9,7 @@
"state": {
"type": "markdown",
"state": {
"file": "03.03 Food & Wine/@@Recipes.md",
"file": "02.02 Paris/@Expositions, concerts et activités.md",
"mode": "preview"
}
}
@ -68,7 +68,7 @@
"state": {
"type": "backlink",
"state": {
"file": "03.03 Food & Wine/@@Recipes.md",
"file": "02.02 Paris/@Expositions, concerts et activités.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@ -79,6 +79,14 @@
}
}
},
{
"id": "51b6dd4b8c0c1449",
"type": "leaf",
"state": {
"type": "empty",
"state": {}
}
},
{
"id": "86a095cebfd3c99f",
"type": "leaf",
@ -88,7 +96,7 @@
}
},
{
"id": "cc17c039396855b5",
"id": "0d5625ecf366c4df",
"type": "leaf",
"state": {
"type": "DICE_ROLLER_VIEW",
@ -99,15 +107,15 @@
},
"active": "c252d60ecbda6bb3",
"lastOpenFiles": [
"03.03 Food & Wine/@@Recipes.md",
"02.02 Paris/Le Barn.md",
"02.02 Paris/@Hotels Paris.md",
"02.02 Paris/@Expositions, concerts et activités.md",
"02.02 Paris/Circuit Sud.md",
"02.02 Paris/@@Paris.md",
"02.01 London/@@London.md",
"03.03 Food & Wine/!!Coffee.md",
"02.02 Paris/Circuit Ouest.md",
"02.02 Paris/Circuit Marais.md",
"02.02 Paris/Circuit Montmartre.md",
"02.02 Paris/@Bars Paris.md",
"01.01 Life Orga/@Life Organisation.md",
"01.02 Home/@Shopping list.md"
"01.02 Home/Life mementos 1.md",
"01.02 Home/Life mementos.md",
"00.01 Admin/Templates/Template Note.md"
]
}

@ -1,83 +1,64 @@
class globalFunc {
DataCheck(/*luxon, */arg1, arg2) {
let tempresult = false
let iarg1 = arg1
let iarg2 = arg2
switch(true) {
case Boolean(arg1.isValid):
case Boolean(arg2.isValid):
case (!Boolean(iarg2 instanceof Object) && !Boolean(iarg1 instanceof Object)):
tempresult = this.compareData(/*luxon, */iarg1, iarg2)
break;
case (!Boolean(iarg1 instanceof Object)):
for (let i = 0; i < iarg2.length; i++) {
tempresult = tempresult || this.compareData(/*luxon, */iarg1, iarg2[i])
}
break;
case (!Boolean(iarg2 instanceof Object)):
for (let i = 0; i < iarg1.length; i++) {
tempresult = tempresult || this.compareData(/*luxon, */iarg1[i], iarg2)
}
break;
default:
for (let i = 0; i < iarg2.length; i++) {
for (let j = 0; j < iarg1.length; j++) {
tempresult = tempresult || this.compareData(/*luxon, */iarg1[j], iarg2[i])
}
DataCheck(arg1, arg2) {
var iarg1 = arg1
if (moment(iarg1).isValid()) {iarg1 = arg1.toString()}
var iarg2 = arg2
if (moment(iarg2).isValid()) {iarg2 = arg2.toString()}
if (!Array.isArray(iarg2) && !Array.isArray(iarg1)) {
var resultdc = this.compareData(iarg1, iarg2)
} else if (!Array.isArray(iarg1)) {
let tempresult = false
for (let i = 0; i < iarg2.length; i++) {
tempresult = tempresult || this.compareData(iarg1, iarg2[i])
}
var resultdc = tempresult
} else if (!Array.isArray(iarg2)) {
let tempresult = false
for (let i = 0; i < iarg1.length; i++) {
tempresult = tempresult || this.compareData(iarg1[i], iarg2)
}
var resultdc = tempresult
} else {
let tempresult = false
for (let i = 0; i < arg2.length; i++) {
for (let j = 0; j < arg1.length; j++) {
tempresult = tempresult || this.compareData(iarg1[j], iarg2[i])
}
break;
}
var resultdc = tempresult
}
return tempresult
return resultdc
}
compareData(/*luxon, */arg1, arg2) {
compareData(arg1, arg2) {
let tempresult = false;
let targ1 = arg1
let toperator = ""
let targ2 = arg2
if (this.hasOperator(arg2.toString())) {
toperator = this.getOperator(arg2)
targ2 = arg2.replace(toperator, "")
}
switch(true) {
case Boolean(arg1.isValid):
targ1 = arg1.toString() //startOf("day")
break;
case Boolean(arg2.isValid):
targ2 = arg2.toString() // startOf("day") //(arg2.isValid) ? arg2.startOf("day") : (luxon.DateTime.fromISO(`${targ2}`)).startOf("day")
break;
case (arg1.length == 0):
targ1 = ''
break;
}
switch(toperator) {
case '<':
tempresult = (targ1 < targ2)
break;
case '<=':
tempresult = (targ1 <= targ2)
break;
case '>':
tempresult = (targ1 > targ2)
break;
case '>=':
tempresult = (targ1 >= targ2)
break;
case '!':
tempresult = (typeof targ1 === 'string' || targ1 instanceof String) ? !(targ1.search(new RegExp(targ2, "i")) > -1) : (targ1 != targ2)
break;
default:
tempresult = (typeof targ1 === 'string' || targ1 instanceof String) ? (targ1.search(new RegExp(targ2, "i")) > -1) : (targ1 == targ2)
break;
}
if (arg2.length > 1 && this.hasOperator(arg2)) {
switch(this.getOperator(arg2)) {
case '<':
tempresult = (parseFloat(arg1) < parseFloat(arg2.replace(this.getOperator(arg2), "")))
break;
case '<=':
tempresult = (parseFloat(arg1) <= parseFloat(arg2.replace(this.getOperator(arg2), "")))
break;
case '>':
tempresult = (parseFloat(arg1) > parseFloat(arg2.replace(this.getOperator(arg2), "")))
break;
case '>=':
tempresult = (parseFloat(arg1) >= parseFloat(arg2.replace(this.getOperator(arg2), "")))
break;
case '!':
if (isNaN(arg2.replace("!", ""))) {
tempresult = !(arg1.search(new RegExp(arg2, "i")) > -1)
} else {tempresult = (parseFloat(arg1) != parseFloat(arg2.replace(this.getOperator(arg2), "")))}
break;
}
} else {tempresult = (arg1.search(new RegExp(arg2, "i")) > -1)}
return tempresult
@ -89,7 +70,6 @@ class globalFunc {
case '<':
case '>':
case '!':
case '=':
tempresult = true
break;
}
@ -97,8 +77,11 @@ class globalFunc {
}
getOperator(arg1) {
return (this.hasOperator(arg1.charAt(1))) ? arg1.charAt(0) + arg1.charAt(1) : arg1.charAt(0);
let tempresult = arg1.charAt(0);
if (this.hasOperator(arg1.charAt(1))) {
tempresult = tempresult + arg1.charAt(1)
}
return tempresult
}
BuildList(arg1, construct) {
@ -121,7 +104,7 @@ class globalFunc {
let TempS = ""
if (arg2 instanceof Object) {
if (Array.isArray(arg2)) {
for (let i = 0; i < arg1.length; i++) {
if (Boolean(arg1[i])) {
if (TempS == "") {
@ -151,8 +134,11 @@ class globalFunc {
}
Get1stArg(arg3) {
return ((arg3 instanceof Object) || (arg3 instanceof Array)) ? arg3[0] : arg3
if (!Array.isArray(arg3)) {
return arg3
} else {
return arg3[0]
}
}
topLevelFilter(pobj, DocType, subType) {
@ -169,7 +155,7 @@ class globalFunc {
}
IsInSearch(/*luxon, */pobj, DocType, darray, iarray) {
IsInSearch(pobj, DocType, darray, iarray) {
let ilength = iarray.length;
let result = true
@ -183,7 +169,7 @@ class globalFunc {
if (Boolean(iarray[i])) {
let pProp = this.GetpProp(pobj, DocType, darray[i])
if (!Boolean(pProp)) { result = result && false } else {
result = result && this.DataCheck(/*luxon, */pProp, iarray[i])
result = result && this.DataCheck(pProp, iarray[i])
}
} else {result = result && true}
}
@ -192,7 +178,7 @@ class globalFunc {
if (Boolean(iarray[i])) {
let pProp = this.GetpProp(pobj, DocType, darray[i])
if (!Boolean(pProp)) { result = result && false } else {
result = result && this.DataCheck(/*luxon, */pProp, iarray[i])
result = result && this.DataCheck(pProp, iarray[i])
}
} else {result = result && true}
break;
@ -202,14 +188,14 @@ class globalFunc {
return result
}
getTable(dv, /*luxon, */DocType, darray, iarray, tabletype) {
getTable(dv, DocType, darray, iarray, tabletype) {
let page = dv.pages()
.filter(p => p && this.topLevelFilter(p, DocType, 0))
.where(p => p && this.IsInSearch(/*luxon, */p, DocType, darray, iarray))
.where(p => p && this.IsInSearch(p, DocType, darray, iarray))
if (page.length == 0) {
return this.EmptyQueryMessage(dv)
if (typeof page == 'undefined' || typeof page == 'null' || page.length === 0) {
return this.EmptyQueryMessage()
}
dv.table(this.GetTableHeaders(DocType, tabletype), page
@ -218,7 +204,7 @@ class globalFunc {
}
EmptyQueryMessage(dv) {
EmptyQueryMessage() {
return dv.el('b', '⚠️ Warning:\nNo result matching your query!')
}
@ -443,9 +429,7 @@ class globalFunc {
toEmoji(label) {
let tempresult = ""
//other test for below: typeof label == 'object'
//return Object.entries(label)
if (label instanceof Object) {
if (Array.isArray(label)) {
for (let i = 0; i < label.length; i++) {
if (tempresult == '') {
tempresult = this.getEmoji(label[i]);
@ -533,11 +517,7 @@ class globalFunc {
break;
case 'Colombia':
tempresult = "🇨🇴"
break;
case 'El Salvador':
case 'ElSalvador':
tempresult = "🇸🇻"
break;
break;
case 'Pub':
tempresult = "🍺"
break;
@ -1030,7 +1010,6 @@ class globalFunc {
break;
}
return result
}
}

@ -3,5 +3,4 @@ const {globalFunc} = customJS
const DataType = 'Place'
let templacetype = globalFunc.Get1stArg(placetype)
return globalFunc.getTable(dv, DataType, ["placetype", "dateadded", "style", "ambiance", "area", "theme", "country", "status"], [placetype, dateadded, style, ambiance, area, theme, country, status], templacetype)

@ -117,10 +117,25 @@ hide task count
&emsp;
```dataview
Table without id tags as "Tags" From "01.03 Family"
Table without id tags as "Tags" From "Family"
Flatten file.tags as tags
Group by tags
```
&emsp;
---
&emsp;
### TimeStamp check
&emsp;
```dataview
Table TimeStamp as "Time Stamp" from "Family"
Where TimeStamp > date(today) - dur(100 years)
Sort TimeStamp ascending
```
&emsp;
&emsp;

@ -1,6 +1,6 @@
---
QPType: ["Restaurant", "Bar"]
QPType: ["Hotel", "Restaurant", "Bar"]
QPStyle:
QPAmbiance:
QPKeyword: Terrace

@ -7,7 +7,7 @@ QueryIngredient: ""
QueryTheme: Healthy
QueryFavourite:
QueryRating: ""
QueryCookingTime: "<40"
QueryCookingTime: ""
cssclass: recipeTable
Alias: ["Recipes"]
Tag: ["Lifestyle", "Food", "Cooking"]

Loading…
Cancel
Save