]> BookStack Code Mirror - bookstack/commitdiff
Refactored moment.js out of app
authorDan Brown <redacted>
Sun, 1 Apr 2018 13:10:12 +0000 (14:10 +0100)
committerDan Brown <redacted>
Sun, 1 Apr 2018 13:10:44 +0000 (14:10 +0100)
Reduces bundle size by 25%

.gitignore
app/Http/Controllers/PageController.php
package-lock.json
package.json
resources/assets/js/services/dates.js [new file with mode: 0644]
resources/assets/js/vues/page-editor.js
resources/assets/js/vues/search.js

index be86e5a039260cdbfa6aa32f667e5c1db286d201..1b53cbe7ac52416e90f3844194aab4a262c48d20 100644 (file)
@@ -21,3 +21,4 @@ nbproject
 .buildpath
 .project
 .settings/
+webpack-stats.json
\ No newline at end of file
index 17bce7eba87232cd7111d28de8be13e945767fdd..9cc73ae154536abc23d0121bf3e30539ef2eb418 100644 (file)
@@ -275,11 +275,10 @@ class PageController extends Controller
         $draft = $this->entityRepo->updatePageDraft($page, $request->only(['name', 'html', 'markdown']));
 
         $updateTime = $draft->updated_at->timestamp;
-        $utcUpdateTimestamp = $updateTime + Carbon::createFromTimestamp(0)->offset;
         return response()->json([
             'status'    => 'success',
             'message'   => trans('entities.pages_edit_draft_save_at'),
-            'timestamp' => $utcUpdateTimestamp
+            'timestamp' => $updateTime
         ]);
     }
 
index ddb40574e92b7ffc7db7d559d02d531163bfb076..c794a62dae93319f0dfde2bad1b1ee45ae531b99 100644 (file)
         "is-extglob": "1.0.0"
       }
     },
-    "extract-loader": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/extract-loader/-/extract-loader-1.0.2.tgz",
-      "integrity": "sha512-hwlXWGHwzBXRNQCkDnLJuNgSkRsmYOwNz7wG9pHfA2EAgQaBCuQR71az7qL3rQT1JAMujiKPc+laet0kddVXWQ==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "1.1.0"
-      }
-    },
     "extract-text-webpack-plugin": {
       "version": "4.0.0-beta.0",
       "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz",
         "escape-string-regexp": "1.0.5"
       }
     },
-    "file-loader": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz",
-      "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "1.1.0",
-        "schema-utils": "0.4.5"
-      }
-    },
     "filename-regex": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
index eebda1fd6e7b1a912b4a12082c56db0b00b4e686..2c2d8e37092c164f5c9571d9820dc72575ab280f 100644 (file)
@@ -3,6 +3,7 @@
   "scripts": {
     "build": "webpack",
     "production": "NODE_ENV=production webpack && rm -f ./public/dist/*styles.js",
+    "build-profile": "NODE_ENV=production webpack --profile --json > webpack-stats.json && rm -f ./public/dist/*styles.js",
     "dev": "npm-run-all --parallel watch livereload",
     "watch": "webpack --watch",
     "livereload": "livereload ./public/dist/",
@@ -34,7 +35,6 @@
     "jquery": "^3.3.1",
     "markdown-it": "^8.3.1",
     "markdown-it-task-lists": "^2.0.0",
-    "moment": "^2.21.0",
     "vue": "^2.2.6",
     "vuedraggable": "^2.14.1"
   },
diff --git a/resources/assets/js/services/dates.js b/resources/assets/js/services/dates.js
new file mode 100644 (file)
index 0000000..d0ecc20
--- /dev/null
@@ -0,0 +1,15 @@
+
+export function getCurrentDay() {
+    let date = new Date();
+    let month = date.getMonth() + 1;
+    let day = date.getDate();
+
+    return `${date.getFullYear()}-${(month>9?'':'0') + month}-${(day>9?'':'0') + day}`;
+}
+
+export function utcTimeStampToLocalTime(timestamp) {
+    let date = new Date(timestamp * 1000);
+    let hours = date.getHours();
+    let mins = date.getMinutes();
+    return `${(hours>9?'':'0') + hours}:${(mins>9?'':'0') + mins}`;
+}
\ No newline at end of file
index d33739b30828b4717695c3cce8a50ca288f5913f..bb8e14c4c2f298be4fa07088a8f80d2c55b19501 100644 (file)
@@ -1,6 +1,4 @@
-const moment = require('moment');
-require('moment/locale/en-gb');
-moment.locale('en-gb');
+import * as Dates from "../services/dates";
 
 let autoSaveFrequency = 30;
 
@@ -96,9 +94,8 @@ let methods = {
         let url = window.baseUrl(`/ajax/page/${this.pageId}/save-draft`);
         window.$http.put(url, data).then(response => {
             draftErroring = false;
-            let updateTime = moment.utc(moment.unix(response.data.timestamp)).toDate();
             if (!this.isNewDraft) this.isUpdateDraft = true;
-            this.draftNotifyChange(response.data.message + moment(updateTime).format('HH:mm'));
+            this.draftNotifyChange(`${response.data.message } ${Dates.utcTimeStampToLocalTime(response.data.timestamp)}`);
             lastSave = Date.now();
         }, errorRes => {
             if (draftErroring) return;
index 8cb790d2456565a68bd50258506dec48aa186195..c0410463323014d4f94d00de30a118bbe8b2b896 100644 (file)
@@ -1,4 +1,4 @@
-const moment = require('moment');
+import * as Dates from "../services/dates";
 
 let data = {
     terms: '',
@@ -153,7 +153,7 @@ let methods = {
     },
 
     enableDate(optionName) {
-        this.search.dates[optionName.toLowerCase()] = moment().format('YYYY-MM-DD');
+        this.search.dates[optionName.toLowerCase()] = Dates.getCurrentDay();
         this.dateChange(optionName);
     },