8

Dashboard Template

Hello everyone!

After the    post, I decided to start a new one. This will make it easier to follow the changes.

New features have been added:

  • Sticky buttons. Thanks to   CSS hacks, I was able to make the buttons component sticky. Now the buttons always remain visible to the top of the page as we scroll down.
  • Scroll into View. By clicking a button the page automatically scrolls into the correspoding section. In the attached database press the first button "Accounts" to see it in action.

The combination of the above two features has the potential to transform the way we design our Dashboards. Like the one-page websites, we can present our content in sections on one long Dashboard.

In Safari works but I haven't check it in other browsers. Let me know if you find any bug.

What other functionalities would you like to see?

Leave here your suggestions, ideas or improvements!

Enjoy!

181 replies

null
    • szormpas
    • 2 mths ago
    • Reported - view

    Version 8.0

    Calendar (scheduler):

    Hello everyone,

    As we all know, Ninox's built-in calendar is pretty basic and has limited capabilities. I thought that if we integrated a custom calendar directly within the dashboard, we could add features that would enhance the user experience.

    FullCalendar.io is a JavaScript library that provides its core as open source. The good news is that its code seems to be quite compatible with Ninox. I was able to fully integrate it and store it inside the Ninox database (no dependency on CDN links).

    I've been able to develop the following features so far:

    • You can upload and display data directly from the Ninox database (event sources).
    • When you hover the mouse over each event, a tooltip will appear (thanks to the hint.css library).
    • When you click on an event, the corresponding record will pop up.
    • To schedule a new event, just choose one or more free slots in the calendar. A new record will be created automatically and populated with the corresponding dates (thanks to  for sharing the use of the fetch method in this post).
    • If you need to change the time of an event, just drag and drop it into a different time slot. The record in the Ninox database will be updated right away.
    • You can edit the events on the calendar, which means you can move and resize their start and/or end times.
    • I've added three views (month, week, day), and I've got more in the pipeline!

    I'm thrilled to announce the launch of the first free, open-source scheduler for Ninox! ☺️

      • Kruna
      • 3 wk ago
      • Reported - view

       yessssss💪, I managed to assign color for choice field like you described here

      let x := (select Appointments); let _events01 := x[choicefield=1].{ //some code here   }; let _events02 := x[choicefield=0].{ //some code here   };
      

      Now, how can I assign color by employees?

      thnx a lot🙂

      • szormpas
      • 3 wk ago
      • Reported - view

        Congrats, I'm happy to say that it's not as difficult as you might think to understand Greek! 😉

      How many employees does your table have?

      • Kruna
      • 3 wk ago
      • Reported - view

       Good morning 🙂 thank you very much. The docs from fullcalendar with respective demos and last but not least learning by doing helped a bit to understand some more to understand - Greek.😄

      For now there are only two employees, but maybe I will have to use two records for each employee, so there could be four 'colors' - maybe more to come.

      thnx

      • szormpas
      • 3 wk ago
      • Reported - view

       Hi, four colors is not too many, so you can follow the same logic and create four unique event sources and then assign a different color to each.

      • Kruna
      • 3 wk ago
      • Reported - view

       me and logic...😂 Well here I used the unique events based on the choice field and I have only two choices, so I am not sure how to create other four? I dont know how to achieve this. My first approach ist that each employee has a record ID.

      In one of your previous suggestions you wrote

      let x := (select Appointments);
      let _eventsUser01 := x[text(_cu)="User01"].{
      backgroundColor: if 'choice field'=1 then "#3485FF" end,
      borderColor: if 'choice field'=1 then "#73455FF" end,
      textColor: if 'choice field'=1 then "#6578FF" end,
      //some code here
       };
      

      So, is there a way to - lets say -

      let _eventsUser01 := x[Employee_record_id=1].{  
       

      thnx

      • szormpas
      • 3 wk ago
      • Reported - view

        Hi, you're right, you need to create an event source for each employee. This means filtering the appointments per employee. How you do this depends on how your database is set up, especially the relationship between the employee table and the appointment table. Can you describe this relationship?

      • Kruna
      • 3 wk ago
      • Reported - view

       I have linked the employee table with the appointment table - here is a screenshot

      thnx

      • Kruna
      • 3 wk ago
      • Reported - view

       please excuse me, but I have another question. I was trying to add another calender. Right under the existing one, but the formula field is empty. I suppose it has to do with html. So I put it in Tab 2 and it worked, but the calendar is absolutely the same, which I do retrace. I guess there must be something like calendar2, right?

      I just cant figure out how to achieve this. Can you help me please, do you have an idea how this works?

      TY :-)

      • szormpas
      • 3 wk ago
      • Reported - view

        Hi, you are right.

      You should create a new <div> element with a unique Id and replace the var names accordingly:

      ...
      <body>
          <div id='calendar2'></div>
          <script>
              var calendar2El = document.getElementById('calendar2');
              var savedView2 = sessionStorage.getItem('calendar2View') || 'timeGridWeek';
              var savedDate2 = sessionStorage.getItem('calendar2Date') || new Date();
              var calendar2 = new FullCalendar.Calendar(calendar2El, {
      ...
      

      You don't have to reload the CSS style or the Full Calendar library twice!

      • szormpas
      • 3 wk ago
      • Reported - view

        Hi, try the following:

      let x := (select Mitarbeiter);
      let _eventsEmployee01 := x[Nr=1].Terminvergabe.{
      backgroundColor: if 'choice field'=1 then "#3485FF" end,
      borderColor: if 'choice field'=1 then "#73455FF" end,
      textColor: if 'choice field'=1 then "#6578FF" end,
      //some code here
       };
      
      • Kruna
      • 3 wk ago
      • Reported - view

       omg!!! thats so awesome!!!thank you very much for all your patience and help.👍 Now I will have to find the script pieces for CSS.😅

      • Kruna
      • 3 wk ago
      • Reported - view

       this is too tricky for me😅 I managed to add your code. At first the formula field was empty. Then I found out that there are other three lines where I needed to change from calendar to calendar2. The fullcalendar showed up, but its still the same calendar as calendar1.

      • szormpas
      • 3 wk ago
      • Reported - view

        have you use a different event source for the calendar2 ?

      • Kruna
      • 3 wk ago
      • Reported - view

       omg, I feel so dumb! Yes, now I used different event sources and it works as it should. Thanks so much :-)))

      • szormpas
      • 3 wk ago
      • Reported - view

        you nailed it! I'm with you on the multiple calendars feature. It's a great addition.

      • Kruna
      • 3 wk ago
      • Reported - view

       yes definetly!!! Thank you so much for that. Now every employee has its own calendar.

      Another issue(s) I found useful to add and I would like to share 

      1. calendar week,

      2. a line which shows the actual time and

      3. drag the appointments/events in calender.

      headerToolbar: {
                                  left: 'prev,next today',
                                  center: 'title',
                                  right: 'dayGridMonth timeGridWeek timeGridDay listMonth'
                                 },
                  weekNumbers: true,
                  nowIndicator: true,
                  droppable: true,
    • szormpas
    • 2 mths ago
    • Reported - view

    Version 8.1

    Floor plan:

    Hello everyone

    came up with this idea in a post, so I thought I'd add it to the dashboard as it might be useful for other users too.

    The Leaflet library lets us turn any image or photo into a map surface.

    Once we know the dimensions of the image, we can easily convert them to coordinates with a 1:1 ratio and use all the great features that Leaflet offers (such as markers, shapes, popups, zoom in/out, events on click, and more).

    I'm using a floor plan as an example here. When you move the mouse over each room, it highlights in colour. Click on it and a pop-up containing a photo of the room appears.

    Have fun!

      • cyan_silver
      • 3 wk ago
      • Reported - view

       
      thank you

      • cyan_silver
      • 2 days ago
      • Reported - view

       
       

      Is there any solution if I use IPAD offline?
    • szormpas
    • 2 mths ago
    • Reported - view

    Version 8.2

    Video player:

    Hello everyone,

     mentioned in this post that we could use HTML to play our videos in Ninox.

    Although I have no experience in video management, I could not resist his kind encouragement to add similar functionality to the dashboard.

    So, I spent a few hours searching the web for an HTML5 player that would work out of the box, be lightweight, and allow for customization.

    I present Vidstack as a proof of concept rather than a complete Ninox solution.

    It is welcome if anyone has a suggestion for a better player or would like to contribute in any way.

    At least enjoy the Sprite Fright short film! 😂

     

      • Fred
      • 2 mths ago
      • Reported - view

      You are da Man!

      • gold_cat
      • 1 mth ago
      • Reported - view

       Cool~Your selfless help has benefited me greatly.

    • szormpas
    • 1 mth ago
    • Reported - view

    Version 9.0

    Input Form widget

    Hello everyone,

    After several days of hard work and a few challenges along the way, I'm happy to present my new widget. It's a custom data entry form in Ninox to replace the familiar left-sliding native form.

    So, what's new with this widget?

    • It's a pop-up design that lets you interact with the background (after opening, it remains visible unless you choose to cancel).
    • You can move (drag) it anywhere on the screen.
    • The cursor can be auto-focused on any field.
    • It supports almost all Ninox fields, like text, password, date, option, and so on.
    • The widget makes sure the data you enter is correct and meets the right requirements. If it isn't, you can't submit it, and you'll see an error message (e.g., Field is required).
    • A hide/show svg eye icon to toggle password visibility.
    • You can put it anywhere on your Table forms or Pages since it's just a custom formula button (Create record).

    Paste your Ninox API key into the corresponding field of the 'Settings' table to test it inside the Dashboard Template.

    Enjoy! 🙂

      • Fred
      • 1 mth ago
      • Reported - view

      That is really cool. You have added a wealth of tools. Thanks, from the community.

      • szormpas
      • 1 mth ago
      • Reported - view

        I forgot to mention that another great feature of the widget is that you can check for duplicates in any field of the table. I've already implemented it for the 'Username' field. Try entering a value in that field that already exists in the table, and you'll see an error message just below the 'Save' button.

Content aside

  • 8 Likes
  • 2 days agoLast active
  • 181Replies
  • 1786Views
  • 12 Following