Commit graph

25 commits

Author SHA1 Message Date
Gandharv
f9aa596994
feat: app builder design changes (#5041)
* feat: version manager, realtime avatars + popover addition
2022-12-29 17:18:24 +05:30
Sherfin Shamsudeen
642c5caa71
Feature/multi page applications (Task ID - CU-2h1bfvw) (#4729)
* Add routes for multi-page apps

* Modify Editor, Viewer and Inspector to accept new app structure

* Show a page selector on left side bar

* Align component deletion logic with new app schema

* Make subcontainer work with multi-page apps

* Load components state properly in viewer

* Use UUID instead of handle for pages

* Display sidebar on viewer to switch pages

* Add proper URL suffixing for pages in viewer

* Add action to switch page

* Revert translation file back to its pre-existing linting

* Fix bug that caused modal to not open/close

* Add support for query params in page switch

* Fix the issue that caused navigation to fail while accessed via slug

* Add missing SwitchPage file

* Add support for page level variables

* Add migration to convert existing apps to new schema

* Add rollback for converting multi-page definitions back to single-page

* Fix migration for multi-page apps

* Adapt import/export service for multi-pages

* [improvements] Multi-page applications (#4755)

* UI updates for page selector popup card

* delete page

* delete page check: if only one page exits

* switch to home page if the selected page is removed

* adds and switch to new page

* updating page name

* updates to home page and starting page

* handle updating the home page when home page is deleted

* search box for filtering pages and minor style updates for the page handler card

* header search box style fixes

* for creating a new page, page handle needs to be unique

* seperating into smaller components

* updated pinned icon for page selector styles and settinf styles

* Leftsidebar header ui component

* handle dark theme

* page handle ui and dark theme fixes for page menu

* page handler edit modal

* pinned state and update pinned state for menu options triggered

* dark theme fixes for edit modal

* handle on update should not be empty or prev

* page handler updater

* added loading state for saving

* handles cancels

* fixes slug ui

* fixes crash for older app versions

* updates the query params when handle gets an update

* update homePage to homePageId

* removes console.log

* go back to the popover for modal close

* fixes: Difficult to select page

* fixes: Difficult to select the three-dot menu

* fixes: on visiting the root url, navigate to homepage on viewer

* adds tooltip for url

* updates the page selector sidebar with sync with query manager

* refactor and cleanup

* refactor and cleanup

* Compute component state when page is switched

* modal should not close on click outside

* disable save button if there is not change in the page handle input

* should show/hide page menu when hovered

* page icon

* updates delete icon for disabled state

* query manager should always be on top of page selector

* checks if homePage key exists in pages def

* updates page handler menu

* updates the clear icon

* page handler menu position

* page handler menu position

* handle icon

* alert msg

* global settings handler for updating viewer page navigation

* show/hode page navigation for viewer

* info text for toggle

* Multipages:with sortable list [DnD] (#4783)

* applied sortable list

* on sort updates the definitions

* fixies: app crash for dnd

* viwer: canvas width should be 100% when navigation drawer is disbaled

* fixes: homepage/startpage  reload

* clean up

Co-authored-by: Sherfin Shamsudeen <[email protected]>

* Multipage UI viewer (#4801)

* new ui changes for viewer pages

* fixes postions for debugger and datasources popover

* removes console.log

* Multipage : hide page and unhide page feature (#4803)

* adds: ability to hide pages

* hides pages in viewer

* unhide page

* hide icon

* allow accessing hidden pages from url

* add: duplicate page (#4802)

* add: duplicate page

* do not copy the  same references from the original page

* page name and page handler should be unique for duplicate pages too

* Add support for on-page-load events

* Add icon from page settings menu item

* Convert existing templates to multi-page schema

* error logs for page level and app level errors (#4842)

* Adapt comments feature for multi-pages

* [Bugfix] multipage - page menu interactions (#4844)

* fixes: menu popup interaction

* fixes: on modal input focus, we switch the page

* Adapt multi-player to multi-pages

* Add editingPageId to ymap

* Log self, others and editor props in real-time avatar generation

* Save editing page id to appDef

* Add editingPageId to presence in RealtimeCursors

* adds no results ui for empty search results (#4869)

* page icon updated (#4870)

* fixes:Version switching crashes if the target version does not contain the current page (#4868)

* Remove unnecessary setting of editingPageId on ymap

* Remove unnecessary console.log

* [Bugfix] Multipages: widget inspector event popover unmounts (#4887)

* introduced a local state for events

* cleaned up inspector.jsx

* fixes: table widget inspector event accordion

* Do not run switchPage twice when viewer is loaded

* Preview should open the currently editing page

* Properly place navigation and canvas in viewer

* Update app definition whenever event manager changes are made

* Add support for browser back and forward button in multi-pages

* Rename handleBackButton to handlePageSwitchingBasedOnURLparam

* Add support for cut/copy/paste and clone

* Fix the crash caused by boxShadow

* Add support for background colors in viewer in multi-pages

* Run queries to be run on load on viewer, in multi-pages

* Fix issue that caused inspector popovers to collapse

* resolves workspace vars in viewer mode (#4892)

* Multipage : Navigation for Mobile-ui (#4814)

* refactored to components

* burger menu for mobile ui

* merge conflict fix for hidden pages

* hamburger menu positioned in the header

* viewer header reafctored

* viewer mobile page manu styles

* handles dark theme

* mobile menu with dark mode toggle in the footer

* components are moved to page level, handle for mobile layout

* style fixes

* removing unwanted code block

* dark theme fixes

* style fixes

* fixes: events are sortable (#4895)

* fixes: events are sortable

* Remove uneccesarily repeated call of setEvents in EventManager

Co-authored-by: Sherfin Shamsudeen <[email protected]>

* renamed settings to Event handlers (#4898)

* updates the page setting title to Page Events

* temp commit

* Add support for setting max width in percentage

* fixes: paramUpdates for boxes: 🙌🏻

* [Bugfix] Multipage - viewer canvas dark theme (#4897)

* fixes: darktheme bg for viewer canvas

* reverts canvas size

* Fix for inspector bouncing back to previous values

* resolves pages variables in pythong and js transformation (#4905)

* csa support to event manager for pages (#4907)

* Add support for setting canvas width in percentages

* Persist page level variables across page switches

* latest definitions is merged with the current appdef (#4914)

* latest definitions is merged with the current appdef

* mutating the local obj

* cleanup

* iterate through pages for new versions are created

Co-authored-by: Arpit <[email protected]>
2022-12-08 17:51:09 +05:30
Gandharv
7994aba9db
fix: marketplace plugin viewer bug (#4732)
* fix: viewer not loading widgets

* typo

* handles query icons in inspector

Co-authored-by: arpitnath <[email protected]>
2022-11-08 17:30:41 +05:30
Midhun Kumar E
a68c727eae
Add cypress test for date picker widget (#3592)
* Add and modify data-cy for widgets

* Add selectors

* Add constant texts and methods

* Add common widget operations

* Add momet to Cypress

* Add common utils and optimized commands

* Add methods specific for Datepicker

* Add spec datePickerHappyPath

* Minor selector modification

* Add verification of value from inspector
2022-07-20 12:41:50 +05:30
Sherfin Shamsudeen
bc93818621
Feature/component property validation (#2782)
* Initial architecture for component property validation

* Coerce to default and log invalid properties

* eslint rule:frontend for  specifying the path to the  @types/

* removes comment for eslint-disable-next-line

* reverts 27946f1 & adding a temporary fix

* Remove incorrect property validations

* Avoid race condiiton in setting state for error logs

* Fix issue where only one error got logged

* Flush out any errors that are logged

* Remove unnecessary console.log

* Add validations for Table properties

* Add support for multiple validations

* Add validation for chart component

* Add validation for modal

* Set default value common to all validation schemas for component properties

* Add validations for password widget

* Add validations for datepicker

* Add information about default value on validation error message

* Remove unwanted console.log

* Do not validate properties on Viewer

* Use meta information from widget config instead of component state to validate

* Do not coerce to default values while validating

* Do not validate existing components

* Update package-lock.json in sync with develop

* Add validation for general properties

* Add support for size validation of component properties and styles

* Add support for min and max spec in size validation

* Support pattern validation for string properties

* Make size validation specifiable along with type specification

* Component validation optimizations

* Remove unnecessary comments

* Remove unnecessary default value param from validation

* Fixed visibility style validation bug

* Added custom validation to PDF & Custom component

* property/style validation statistics

* values changed to string

* validation button group widget

* bugfix

* Added property validation to timeline widget

* Added visibility prop validation to timeline widget

* steps property/style validation

* svg component property validation

* component property validation numberinput

* bugfix

* validation textarea

* validation vertical divider

* property validation html widget

* validation :: checkbox

* image property validation

* validation :: rangeslider widget

* validation :: circular progress bar

* validation spinner

* added props and style validation

* tags validation

* validation :: pagination

* timer :: validation

* validation :: toggle

* validation :: divider

* validation :: radiobutton

* added props and style validation

* validation:: iframe

* validation :: password input

* validation:: code editor

* validation :: listview

* validation :: star rating

* validation :: modal

* validation :: qrscanner

* validation :: datepicker

* multiselect :: validation

* added union validation for border radius

* added props and style validation

* added props and styles validation

* added props and styles validations

* added props and styles validations

* added props and style validations

* added props and styles validations

* added prop and style validations

* added props and styles validations

* Added ID validation to steps widget

* Removed default value

* Added validation key to SVG widget

* Removed default value

* table validations

* table validations

* removing default value

* removing defaultval

* removing default val

* removing default val

* padding validation update

* updating number validation

* updatin number validation

* validation updates

* border validation

* border radius validation

* number input validation

* validation updates

* border radius validation

* validation update

* Updated misspelled schema text

* Updated Tabs validation schema

* Updated tooltip element schema

* Updated validation for multi select

* Updated validation for dropdown

* Updated validation for text widget

* Rectified mispelled validation

* Fixed : validation not working for format

* Added Array validation to chart widget

* format prop bug fix

* draft complete :: table validation

* Fixed misspelled text

* Don't validate properties that are not defined on widgetConfig

Co-authored-by: arpitnath <[email protected]>
Co-authored-by: Kavin Venkatachalam <[email protected]>
Co-authored-by: stepinfwd <[email protected]>
Co-authored-by: manishkushare <[email protected]>
Co-authored-by: Kavin Venkatachalam <[email protected]>
2022-07-19 18:51:45 +05:30
Kiran Ashok
48dc072f17
Feature :: adding 'add datasource' option on datasource panel (#3191)
* adding datasource button

* lifting stateup :: completed

* naming update

* name change

* checks for udefined

* Revert "checks for udefined"

This reverts commit c542359e0f.

* icon updated

* fontweight removed
2022-06-15 16:16:51 +05:30
Ajith KV
a71c7b8a7f
fix: failing button widget cypress test (#3238)
* Updated cypress test for button widget

* Updated the custom command for create app

* Added data-cy attributes for elements

* Updated common selectors file
2022-06-15 15:57:03 +05:30
Muhsin Shah C P
28bac00491
[bugfix] Now the app exit modal will not show if there isn't anything to save (#3167)
* Now, the exit app pop up modal will only show if there are any changes to save

* Resolved a bug

* Refactored the code
2022-06-01 17:44:59 +05:30
Kiran Ashok
336b099db7
Bugfix :: Canvas background made programmable and fix for alpha not working (#2807)
* fixing alpha not changing issue

* fixing possible undefined isues

* including codehinter for canvas bg colour updation

* updating styles

* codehinter with gloabla value access

* updating colour bug

* updating fx styles

* light mode updates

* fixing light bg bugs

* cleanup

* fixing flickering

* dynamic background changing using fx :: fix

* removing all logs and fixing state not updating correctly issue

* fixing layout

* updates useeffect trigger

* live typing component , bugfix

* viewer testing

* fixing issue in preview mode

* colour preview issue fix
2022-06-01 16:48:12 +05:30
Arpit
c8fbd62502
[Improvement/feature] Redesigned application inspector 🚀 (#2789)
* JSON Tree Viewer component: init

* JSON Node indicator

* Node indicator and NodeString

* function to get current node type and render component accordingly

* Handles Object, Array, String type

* Show/hide node identifier for only array and object with more than 0 items

* adds option to render node icons

* inspector json-tree: queries icons

* inspector json-tree: component icons

* fixes min/max width for the inspector popup card

* renames node details: keys to entries

* fixes getting the type of the currentNode

* inspector styes and style fixes for string, bools and number

* handles styles for undefined and null type

* removes type label for null and undefined

* fixes node margins

* adds option to use indentation node block (css border for node groups)

* improvement: update pinned icon as per pinned state

* fixes expanding and flatenning  the first element of a nested list

* fixes length label displays false, should always be number.

* handles function type

* fixes margin for String nodes

* inspector styles

* updates hexacode for selected node bg

* styles fixes

* adds copy-to-clipboard for each nodes

* show hide buttons for actions on mouse enter

* adds: delete widget from inspector popup

* adds: widget selector action

* tooltip for showHide options action buttons

* refactor

* adds: runQuery action for queries

* removes icons for root nodes for inspector

* Toggle icon (NodeIndicator) should should be displayed for Object and array type (0 length)

* hide node indicator for functions

* removes hover for nodes

* styles fixes

* on hover icons are not visible for expanded items

* style updates: selectable node

* adds onSelect callback option on lables

* adds: on expand with onclick lables props

* fixes cursor styles on Mouse enter

* fixes copy to clipboard action: from value to path

* fixes currentPath

* copy path to clipboard, return absolute path

* fixes broken widget icons

* selecting a widget in editor, selects the component/node in the tree

* fixes app crash when adding runjs queries to the json-vieweer

* fixes text-transformation to active nodes

* fixes with selectedWidget in the editor, expandable node was alwasys the widget node

* adds: dark theme

* clean up

* error boundary

* fixes: current node and hovered node update callback on mouse enter

* fixes options alignmeny

* adds more actions menu option popover

* refactored

* fixes reverse selection fo widget and node

* fixes radio button svg icon

* fixes: two child nodes of different parent get the active class

* fixes popover menu options

* fixes selected node display:hidden

* clean up

* toggle icon should not expand if empty

* adds tooltip for more actions

* spliting into different files

* minor improvements: toggling icon should select the label node, selected node if string should not updated to the last selected widget node

* resolves lifecycle method changes

* resolves changes

* resolves changes

* revert lock file changes

* Revert "revert lock file changes"

This reverts commit 10de6accf7.

* fixes: app crash, undoing one widget from canvas

* adds a comment for expand with labels

* minor enhancement:onMouseEnter updates the current hovered node

* minor enhancement: differentiate hovered node
2022-05-05 13:54:12 +05:30
Muhsin Shah C P
722a701b22
[Feature] option to delete a data source 🚀 (#2790)
* Implemented frontend
- icon and confirmation modal
- delete fn in services

* Implemented backend Endpoint
- Changed confirmation modal msg

* Added unit test for delete operation

* Changed the modal msg again

* Fixed delete btn alignment issue

* Resolved a bug

* changed popover width

* Now delete endpoint will only return the status

* Added a new spec to test delete a data-source from a specific version

* Added deleteDataSource ability

* Removed commented code

* Added BadRequestException in else case

* Resolved an error

* Changed confirmation modal
2022-05-02 18:42:14 +05:30
Muhsin Shah C P
380ea73b30
[Feature] Added a feature to show maintenance state of an app (#2820)
* Implmented toggle and confirmation modal
- Also maintenance state will store in db as a global setting

* Added is_maintenance_on column to apps table

* Now maintenance state will store in app entity

* Lauch btn will be disabled for on-maintenance apps

* Users can't see preview using shared links when app is on maintenance

* Changed toggle name

* Changed maintenance dialog message
- Changed button text
- Fixed some alignment
2022-04-21 22:08:54 +05:30
Kiran Ashok
442c470ead
Redesigned left sidebar to increase width and include labels (#2482)
* setting minimum width for left sidebar

* updated left sidebar width

* left-sidebar width updation and including label

* adjusting margin for changed width

* bugfix darkmode

* fixing bug in margin of sidebar

* updating icon for inspect

* aligning canvas for changed width

* adjusting margin of sidebar popovers for changed sidebar width

* margin bugfix
2022-03-11 08:36:38 +05:30
Arpit
d4da5591cb
Adds support for custom variables (#1780)
* adding new action: set variable

* adding unset variable action

* add customVariables when editor mounts

* removed unused props

* removed unused props

* updated actions and inspector popover

* removes white space

* add variables to resolve reference

* adding variables to suggestion hints

* adding variables to suggestion hints

Co-authored-by: Sherfin Shamsudeen <[email protected]>
2022-01-31 09:06:34 +05:30
Akshay
823833b12e
Feature: Versioning data sources & queries (#1620)
* add migrations for versioning datasources and dataqueries

* eslint migrations folder

* update ormconfig to use app context in migrations

* make app to make use versioned data sources and queries in editor

* app import should honor data source and query versioning

* register ts-node path on running migrations

* load data queries when finding versions

* update e2e tests

* handle for invalid oauth2 datasources

* update e2e tests

* introduce db migrations access lock to handle concurrent backfill

* scope migrations by missing version id

* fix import export without data source/query versions

* fix import

* fix spec

* handle invalid data on migration

* fix import

* remove console logs

* handle new app imports

* fix version check

* fix async creation

* explicitly add timestamps on version import
2022-01-04 13:34:12 +05:30
Gandharv
d97ad3e360
add definition default values (#1549) 2021-12-09 17:33:13 +05:30
Gandharv
13a3a2c38c
Add global settings popup to left sidebar (#1532)
* add global settings popup inside inspector

* remove comment badge

* move global settings to left sidebar
2021-12-08 12:54:10 +05:30
Navaneeth Pk
20cccd1df7
Responsive canvas (#1363)
* Better canvas

* Better canvas

* Better canvas

* Fix for resize

* Fix for drag

* Fix for drag

* Fix for drag

* Adjust width of components by # of grid lines

* Adjust components to comply with gridline based width

* Fix the width of rigth sidebar

* Fix for subcontainer resize issue

* Fix for dropped widget width (sc)

* Fix subcontainer drag width

* Fix grid for sub container

* Fix viewer

* Fix

* Fix

* Use RnD for dragging within canvas

* bounds for subcontainers

* fix for subcontainers

* Fix for mouseover issue

* Fix

* Fix widget widths

* Fixes chart

* Fixes qr scanner and divider

* Remove scaleValue

* Mmerge fix

* Mmerge fix

* Fix for ormconfig

* Fixes for comments

* Add comment where the user clicked

* Disable dragging on viewer

* Max width for canvas

* Fix for widget click events

* Fix for radio button

* Rebase widget width and left offset for responsive canvas

* Fix

* Fix the width of file picker

* Fix for calendar widget

* Disable zoom selector

* Fixes comment positions

* css fixes

* Fix

* Recompute width and offset of subcontainer widgets based on its parent's width

* Calculate container width separately for modal children while migrating to responsive

* Refactor migration to responsive canvas whereinwhich all mutations are done only after all required changes are computed

Co-authored-by: Sherfin Shamsudeen <[email protected]>
2021-11-16 17:14:09 +05:30
Gandharv
76e86bc56e
Chore: rename files to camelcase (#1388) 2021-11-10 14:13:22 +05:30
Gandharv
22bce1f4fb
Feature: Collaboration ( realtime comments for canvas ) 🔥 (#810)
* feat: initial commit for collaboration feature

* add dnd to comments

* add positions endpoint

* feat: encapsulate all http common logic in http-client

* segregate sections and transfer responsibility of state

* feat: use-spring to add fade effect 

* fix: open in right

* fix: left-right position css

* add footer for message

* integrate getcomment endpoint

* use fromnow for date ago

* add dnd

* - Add data trasfer object for comment
- Add class-validator package to check the response type from client
- Add comment repository class for persistance layer
- Add comment service with std. http methods
- Update controller with all http methods
- Update comment module
- Fix http-client bug when error is thrown

* fix http client bug when error is thrown

* feat: add entity thread

* feat: add migrations for thread and comment

* update entitites

* add tid to migration

* filter comments by tid(thread_id)

* fix: comment migration, add missing column comment

* feat: integrate in ui

* feat: split comments based on app_id

* fix: dnd to correct position

* package json engines

* engines update

* update npm

* npm 6 to 7

* fix: add user initials to thread

* fix: add firtname lastname to the comments

* - Return user object when save thread called
- Hide password field from user response
- Fix created_at date typo
- Instead of fetch all threads on new thread added, add the response to array of existing threads

* feat: update ui components

* change icon on comments view

* ui fixes

* fix: close icon close the popover

* temp: comment select: false

* use currentUser from localStorage

* fix: on click outside if comment is open, dont hit addThread

* fix: auth token issue in http-client

* on drag hide the comment if open

* add jwt auth

* spec: add test for comment & thread

* cleanup: remove console.log

* feat: add comment actions

* feat: add edit, delete, resolve options

* feat: add mentions component

* feat: add nestjs websockets

* temp

* websocket: establish client-server communication

* ws: add message listner to comments module in ui

* feat: add broadcast method to broadcast new events to all clients 💣

* ws: cleanup 🤙

* fix: remove max height from comment actions

* feat: add user mentions, emoji support

* fix: add static list of users - temp

* update and delete iterations

* - Rename comment, thread to comments, threads
- Add conditional actions
  - Show edit, delete only if he is comment owner
  - Show resolve only if he is thread owner

* reset engines

* move svgr webpack to deps

* fix: ui issues

* remove log stmt

* refactor: move resolved icon to comment-header

* feat: allow comments to be added on top of widgets

* feat: add keyboard shortcut

* scroll to bottom on comment add

* ui fixes

* feat: add react toast for notification display

* feat: add comment badge

* fix: ws connection

* fix: ws

* remove rvrse

* feat: add comment sidebar

* feat: add comment right sidebar

* fix: add missing foreign key elements

* - upgrade typeorm to 0.2.38
- comment sidebar ui
- added filter ui

* feat: on click of right sidebar notificaiton open the comment box

* reset engines

* fix: add organization id to the comment and thread module

* fix: add current version id

* add currentversion id

* disable comments if no id present

* temp:checking for heroku deploy

* fetch app on edit and deploy version

* rename current_version_id to app_versions_id

* ui fixes

* show mentioned user in blue color

* add ui changes

* add authorization for create thread

* change color to blue on click of comment, add auth for other endpoints of thread

* update threads, notifications using socket

* add auth for comments

* remove events spec file

* fix duplicate key error

* fix notificaitons updation on edit, delete, resolve buttons clicked

* update notifications for edit

* feature toggle changes for frontend

* add check for comments server

* add emoji mart package for emoji

* add reply count in comment sidebar

* subtract 1 from count in comment sidebar

* change empty text when no comments available
2021-11-01 12:58:03 +05:30
Bhavin Ag
37d3bb4ae9
update theme toggle position to bottom (#1186) 2021-10-21 22:57:31 +05:30
Dainius Lukša
68566a6126
Confirmation dialog on app builder leave (#989) 2021-10-13 09:32:18 +05:30
Gandharv
dcecde5617
Add bg if the sidebar item is selected: (#730) 2021-09-12 09:54:47 +05:30
Arpit
03cb61d8e9
Feature: debugger 🔥 (#603)
* debugger

* debugger.2

* empty options

* json styles

* positioning the divider for each queries

* refactored for generic cases

* bug fix: a single log for each datasource

* renamed file

* fixed

* naming fixed

* .

* SidebarDebugger.jsx
2021-08-27 12:05:53 +05:30
Gandharv
6837104171
Feature: redesign left sidebar 🎉 (#512)
* feat: add left sidebar new ui ❇️

* new: add svg spring motion dark mode icons

* - add tooltip
- reduce icon size to 20px h&w
- fix indentation

* remove logs

* fix: typo

* fix: on click of arrow the ref was not captured, react repo has reference to this issue at : https://github.com/facebook/react/issues/20325

* css fixes

* color changes for moon icon

* revert css'

* fix back button not working due to incorrect clean up function

* feat: add use-router hook component

* - make sun svg have a white circle inside
- fix the alignment of darkmode toggle on homepage

* fix: pkg lock after fresh install with 7.20.x
2021-08-17 11:31:12 +05:30