removed lodash

This commit is contained in:
2024-10-10 16:44:08 +03:00
parent 986d3420cb
commit f949852c1a
13 changed files with 1164 additions and 714 deletions
+11
View File
@@ -0,0 +1,11 @@
export function debounce(callback, wait) {
let timeoutId = null;
return (...args) => {
window.clearTimeout(timeoutId);
timeoutId = window.setTimeout(() => {
callback.apply(null, args);
}, wait);
};
}
+19 -3
View File
@@ -1,18 +1,18 @@
import {formatDistanceToNow, parseJSON, format, parse} from "date-fns"; import {format, formatDistanceToNow, parseJSON} from "date-fns";
export function friendlyDate(date) { export function friendlyDate(date) {
return formatDistanceToNow(parseJSON(date), {addSuffix: true}); return formatDistanceToNow(parseJSON(date), {addSuffix: true});
} }
export function readableDate(date) { export function readableDate(date) {
if(!date){ if (!date) {
return ""; return "";
} }
return format(parseJSON(date), "dd MMM yyyy"); return format(parseJSON(date), "dd MMM yyyy");
} }
export function readableDatetime(date) { export function readableDatetime(date) {
if(!date){ if (!date) {
return ""; return "";
} }
@@ -50,3 +50,19 @@ export function clickOutside(node) {
} }
} }
export function uniqueBy(list, callback) {
const itemMap = list.reduce((c, item) => {
c[callback(item)] = item;
return c;
}, {});
return Object.values(itemMap);
}
export function range(start, end) {
var ans = [];
for (let i = start; i <= end; i++) {
ans.push(i);
}
return ans;
}
@@ -1,7 +1,7 @@
<script> <script>
import { createEventDispatcher } from "svelte"; import { createEventDispatcher } from "svelte";
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
import { range } from "lodash"; import { range } from "../../../helpers.js";
import NavItem from "./NavItem.svelte"; import NavItem from "./NavItem.svelte";
export let inModal; export let inModal;
export let modalUrl; export let modalUrl;
@@ -1,8 +1,8 @@
<script> <script>
import {createEventDispatcher, getContext} from "svelte"; import {createEventDispatcher, getContext} from "svelte";
import {debounce} from "lodash"; import {debounce} from "../../../debounce.js";
import {previewTitle} from "../../records/Preview"; import {previewTitle} from "../../records/Preview";
import axios from "axios";
const channel = getContext("channel"); const channel = getContext("channel");
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
+2 -5
View File
@@ -1,6 +1,5 @@
<script> <script>
import {afterUpdate, getContext, onMount} from "svelte"; import {afterUpdate, getContext, onMount} from "svelte";
import {isEqual} from "lodash";
import axios from "axios"; import axios from "axios";
import EditHeader from "./header/EditHeader.svelte" import EditHeader from "./header/EditHeader.svelte"
import FilePreview from "./FilePreview.svelte" import FilePreview from "./FilePreview.svelte"
@@ -10,6 +9,7 @@
import Info from "./Info.svelte" import Info from "./Info.svelte"
import ErrorAlert from "../common/ErrorAlert.svelte" import ErrorAlert from "../common/ErrorAlert.svelte"
import Title from "./header/Title.svelte"; import Title from "./header/Title.svelte";
import {hasDataChanged} from "./editor.js";
const channel = getContext("channel"); const channel = getContext("channel");
@@ -74,10 +74,7 @@
} }
function checkUnsavedData() { function checkUnsavedData() {
if (isCreateMode) { return hasDataChanged(isCreateMode,originalContent,{
return false;
}
return !isEqual(originalContent, {
data: record.data, data: record.data,
schema: record.schema, schema: record.schema,
status: record.status, status: record.status,
+3 -2
View File
@@ -2,11 +2,12 @@
import {friendlyDate} from "../../helpers"; import {friendlyDate} from "../../helpers";
import Avatar from "../account/Avatar.svelte"; import Avatar from "../account/Avatar.svelte";
import {usernameById} from "../account/users"; import {usernameById} from "../account/users";
import {isEqual} from "lodash";
import Icon from "../common/Icon.svelte"; import Icon from "../common/Icon.svelte";
import RevisionCell from "./revisions/RevisionCell.svelte"; import RevisionCell from "./revisions/RevisionCell.svelte";
import {getContext} from "svelte"; import {getContext} from "svelte";
import RevisionEdgeRow from "./revisions/RevisionEdgeRow.svelte"; import RevisionEdgeRow from "./revisions/RevisionEdgeRow.svelte";
import axios from "axios";
import {hasDataChanged} from "./editor.js";
const channel = getContext("channel"); const channel = getContext("channel");
export let record; export let record;
@@ -60,7 +61,7 @@
selectedRevision = revision; selectedRevision = revision;
fieldsWithDiff = schema.fields.filter((f) => { fieldsWithDiff = schema.fields.filter((f) => {
return !isEqual(selectedRevision.data[f.name], record.data[f.name]); return hasDataChanged(false,selectedRevision.data[f.name], record.data[f.name]);
}); });
getEdgesByField(fieldsWithDiff, revision) getEdgesByField(fieldsWithDiff, revision)
revisionSection.scrollIntoView(); revisionSection.scrollIntoView();
+2 -6
View File
@@ -1,7 +1,6 @@
<script> <script>
import {afterUpdate, createEventDispatcher, getContext, onMount} from "svelte"; import {afterUpdate, createEventDispatcher, getContext, onMount} from "svelte";
import {hasDataChanged} from "./editor.js";
import {isEqual} from "lodash";
import FormField from "./FormField.svelte"; import FormField from "./FormField.svelte";
import FilePreview from "./FilePreview.svelte"; import FilePreview from "./FilePreview.svelte";
import ContentTabs from "./header/ContentTabs.svelte"; import ContentTabs from "./header/ContentTabs.svelte";
@@ -80,10 +79,7 @@
} }
function checkUnsavedData() { function checkUnsavedData() {
if (isCreateMode) { return hasDataChanged(isCreateMode, originalContent, {
return false;
}
return !isEqual(originalContent, {
data: record.data, data: record.data,
schema: record.schema, schema: record.schema,
status: record.status, status: record.status,
+6
View File
@@ -0,0 +1,6 @@
export function hasDataChanged(isCreateMode, originalContent, newContent){
if (isCreateMode) {
return false;
}
return JSON.stringify(originalContent) !== JSON.stringify(newContent);
}
@@ -1,10 +1,11 @@
<script> <script>
import {getContext} from "svelte"; import {getContext} from "svelte";
import {debounce} from "lodash"; import {debounce} from "../../../debounce.js";
import {previewTitle} from "../Preview"; import {previewTitle} from "../Preview";
import {getErrorMessage} from "./errorMessage"; import {getErrorMessage} from "./errorMessage";
import {insertEdges} from "./reference.js"; import {insertEdges} from "./reference.js";
import Icon from "../../common/Icon.svelte"; import Icon from "../../common/Icon.svelte";
import axios from "axios";
const channel = getContext("channel"); const channel = getContext("channel");
export let field; export let field;
@@ -18,7 +19,7 @@
$: references = graph.edges $: references = graph.edges
.filter((edge) => edge.field === field.name) .filter((edge) => edge.field === field.name)
.map((edge) => { .map((edge) => {
return graph.records.find((increc) => increc.id == edge.target && record.id == edge.source); return graph.records.find((increc) => increc.id === edge.target && record.id === edge.source);
}).filter((rec) => (rec?.id ? true : false)) ?? []; }).filter((rec) => (rec?.id ? true : false)) ?? [];
let search = "" let search = ""
@@ -48,11 +49,9 @@
.then((response) => { .then((response) => {
searchOptions = []; searchOptions = [];
insert(e, response.data.records[0]); insert(e, response.data.records[0]);
console.log(response)
}) })
.catch((error) => { .catch((error) => {
searchOptions = []; searchOptions = [];
console.log(error);
}); });
} }
@@ -79,7 +78,6 @@
}) })
.catch((error) => { .catch((error) => {
searchOptions = []; searchOptions = [];
console.log(error);
}); });
}, 500); }, 500);
+1 -2
View File
@@ -1,11 +1,10 @@
<script> <script>
import { uniqueId } from "lodash";
import { getContext } from "svelte"; import { getContext } from "svelte";
const channelurl = getContext("channelurl"); const channelurl = getContext("channelurl");
export let field; export let field;
export let value; export let value;
export let schema; export let schema;
let id = uniqueId(); export let id;
</script> </script>
<div class="mb-0"> <div class="mb-0">
@@ -1,4 +1,4 @@
import {uniqBy} from "lodash"; import {uniqueBy} from "../../../helpers.js";
import axios from "axios"; import axios from "axios";
export function insertEdges(graph, sourceRecord, targetRecords, fieldName, action = "") { export function insertEdges(graph, sourceRecord, targetRecords, fieldName, action = "") {
@@ -17,8 +17,8 @@ export function insertEdges(graph, sourceRecord, targetRecords, fieldName, actio
replacedEdges = replacedEdges.filter((edge) => edge.field !== field.name); replacedEdges = replacedEdges.filter((edge) => edge.field !== field.name);
} }
graph.records = uniqBy([...graph.records, ...targetRecords], (r) => r.id); graph.records = uniqueBy([...graph.records, ...targetRecords], (r) => r.id);
graph.edges = uniqBy([...replacedEdges, ...newEdges], (edge) => edge.source + edge.target + edge.field + edge.depth); graph.edges = uniqueBy([...replacedEdges, ...newEdges], (edge) => edge.source + edge.target + edge.field + edge.depth);
return graph; return graph;
} }
+1111 -684
View File
File diff suppressed because it is too large Load Diff
-1
View File
@@ -19,7 +19,6 @@
"htmx.org": "^2.0.1", "htmx.org": "^2.0.1",
"install": "^0.13.0", "install": "^0.13.0",
"laravel-vite-plugin": "^1.0.5", "laravel-vite-plugin": "^1.0.5",
"lodash": "^4.17.21",
"mustache": "^4.2.0", "mustache": "^4.2.0",
"npm": "^10.8.2", "npm": "^10.8.2",
"postcss": "8.4.31", "postcss": "8.4.31",