From: Vincent Vanwaelscappel Date: Thu, 16 Jun 2022 14:41:30 +0000 (+0200) Subject: wip #4210 @0.5 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=819376c889c54a4189289a62fd2ea428302f8701;p=fluidbook-toolbox.git wip #4210 @0.5 --- diff --git a/app/Http/Controllers/Admin/FluidbookThemePreviewController.php b/app/Http/Controllers/Admin/FluidbookThemePreviewController.php index 80dd93e38..1f8643b22 100644 --- a/app/Http/Controllers/Admin/FluidbookThemePreviewController.php +++ b/app/Http/Controllers/Admin/FluidbookThemePreviewController.php @@ -25,4 +25,9 @@ class FluidbookThemePreviewController extends XSendFileController { return $this->preview($id, 'menu'); } + + public function previewLoader($id) + { + return $this->preview($id, 'loader'); + } } diff --git a/app/Jobs/GenerateThemePreview.php b/app/Jobs/GenerateThemePreview.php index 914965475..1ebfbb227 100644 --- a/app/Jobs/GenerateThemePreview.php +++ b/app/Jobs/GenerateThemePreview.php @@ -34,17 +34,15 @@ class GenerateThemePreview extends Base */ public function handle() { - $path = self::getPreviewPath($this->theme->getIdValue()); - $pathmenu = self::getPreviewPath($this->theme->getIdValue(), 'menu'); - $cl = new CommandLine('node'); $cl->setArg(null, resource_path('js/theme_preview/theme_preview.js')); $cl->setArg('width', 1024); $cl->setArg('height', 768); $cl->setArg('delay', 2); $cl->setArg('scale', 1); - $cl->setArg('dest', $path); - $cl->setArg('destmenu', $pathmenu); + $cl->setArg('dest', self::getPreviewPath($this->theme->getIdValue())); + $cl->setArg('destmenu', self::getPreviewPath($this->theme->getIdValue(), 'menu')); + $cl->setArg('destloader', self::getPreviewPath($this->theme->getIdValue(), 'loader')); $cl->setArg('page', 2); $url = $this->theme->getPreviewURL(['shortLoading' => 1, 'transition' => 1]); $cl->setArg('url', $url); diff --git a/resources/js/theme_preview/theme_preview.js b/resources/js/theme_preview/theme_preview.js index 95defa888..858f6249a 100644 --- a/resources/js/theme_preview/theme_preview.js +++ b/resources/js/theme_preview/theme_preview.js @@ -3,26 +3,35 @@ const commandLineArgs = require('command-line-args'); const optionDefinitions = [{name: 'url', type: String}, {name: 'dest', type: String}, { name: 'destmenu', type: String -}, {name: 'delay', type: Number, defaultOption: 10}, {name: 'scale', type: Number, defaultOption: 1}, { - name: 'width', +}, {name: 'destloader', type: String}, {name: 'delay', type: Number, defaultOption: 10}, { + name: 'scale', type: Number, - defaultOption: 1920 -}, {name: 'height', type: Number, defaultOption: 1080}, {name: 'page', type: Number, defaultOption: 2}]; + defaultOption: 1 +}, {name: 'width', type: Number, defaultOption: 1920}, { + name: 'height', + type: Number, + defaultOption: 1080 +}, {name: 'page', type: Number, defaultOption: 2}]; (async () => { const {installMouseHelper} = require('./install-mouse-helper'); const options = commandLineArgs(optionDefinitions); const browser = await puppeteer.launch({headless: true}); + const page = await browser.newPage(); await page.setViewport({ width: options.width / options.scale, height: options.height / options.scale, deviceScaleFactor: options.scale, }); await installMouseHelper(page); + await page.goto(options.url, {waitUntil: 'networkidle2'}); + await page.screenshot({path: options.destloader, type: 'jpeg', quality: 95}); await new Promise(r => setTimeout(r, 1000 * (options.delay - 1))); // Show slider and thumbs await page.evaluate(() => fluidbook.slider.hover(512)); + // Set bookmark on page 3 + await page.evaluate(() => fluidbook.bookmarks.addBookmark(3)); // Move to page 2 await page.evaluate(() => fluidbook.setCurrentPage(2)); // Move mouse to hover a link (show tooltip and link) @@ -32,8 +41,10 @@ const optionDefinitions = [{name: 'url', type: String}, {name: 'dest', type: Str await page.screenshot({path: options.dest, type: 'jpeg', quality: 95}); // // Open share menu and take a screenshot - // await page.evaluate(() => fluidbook.menu.openView('share')); - // await new Promise(r => setTimeout(r, 500)); - // await page.screenshot({path: options.destmenu, type: 'jpeg', quality: 95}); + await page.evaluate(() => fluidbook.nav.menuAPI.open()); + await new Promise(r => setTimeout(r, 500)); + await page.mouse.move(60, 400); + await page.screenshot({path: options.destmenu, type: 'jpeg', quality: 95}); + await browser.close(); })(); diff --git a/routes/web.php b/routes/web.php index ccba5f0d1..b92957e6f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -9,6 +9,8 @@ Route::group([ ], function () { // custom admin routes Route::any('tools/{tool}/{args?}', 'ToolsController@index')->where(['args' => '.*']); Route::post('toolbox_setting', 'ToolboxSettingsController@set'); - Route::get('fluidbookthemepreview/{id}.jpg', 'FluidbookThemePreviewController@preview'); + Route::get('fluidbookthemepreview/{id}-loader.jpg', 'FluidbookThemePreviewController@previewLoader'); Route::get('fluidbookthemepreview/{id}-menu.jpg', 'FluidbookThemePreviewController@previewMenu'); + Route::get('fluidbookthemepreview/{id}.jpg', 'FluidbookThemePreviewController@preview'); + });