protoswype / shiny_ninja Goto Github PK
View Code? Open in Web Editor NEWThis application will be used to keep track of working times.
This application will be used to keep track of working times.
Der Save and New Button sollte nicht beim nachträglichen editieren eines Eintrags erscheinen.
Der Button "projekt entfernen" ist zwar vorhanden, aber das Projekt wird nicht gelöscht. Link ist falsch Methode (destroy) wird gar nicht erst aufgerufen.
Ich bleibe leider zur Zeit immer wieder daran hängen, dass ich nur ein Projekt so richtig verwalten kann wg. der Gehaltsberechnungen.
Problem: Verschiedene Stundenlöhne bei verschiedenen Projekten obwohl gleiche Arbeit. Oft wird ja ein Stundenlohn im Rahmen des Projekts ausgemacht und nicht für jede einzelne Tätigkeit (wobei dieser Punkt auch wichtig ist).
Vorschlag:
Hilfeseite für Applikation
Beim Internet Explorer 11 heißt die Fehlermeldung: "Achtung! Sie benutzen Other 0. Bitte wechseln Sie zu einer neueren Version ihres Browser für maximale Funktionalität." "Other 0" sollte eigentlich den Browser und die Versionsnummer zeigen bzw. beim Internet Explorer, dass möglicherweise Funktionen nicht verfügbar sind (https://github.com/prog4fun/shiny_ninja/blob/master/app/controllers/indices_controller.rb#L54-L60).
Möglicher Grund: das benutzte Gem kennt den Brwoser noch nicht.
Tätigkeiten können ohne Stundenlohn hinzugefügt werden.
da #3 ja noch in weiter ferne ist, kann man überlegen, ob man einen zweiten submit-button "speichern und neu" realisieren kann, der statt auf die report/show zu leiten, wieder auf report/new zeigt und dann das soeben verwendete und projekt schon vorausgewählt hat, sodass man nur noch auf die schnelle zeit und tätigkeit eintragen muss und dann kann es schon weitergehen...
In report/new das vordefiniert Gehalt (grau - text feld beschreibung) anzeigen
Ich weiß nicht wie es bei Android ist, aber bei iOS benötigt man den Datepicker nicht, wenn man bei den Feldern statt type="text"
einfach type="date"
verwendet. Das ist HTML5 konform und würde auf mobilen Geräten den Datepicker überflüssig machen - dieser ist auch auf kleinen Geräten recht schwer zu bedienen...
Hier hilft in der Klasse .container in Zeile 748 ein margin-top: 60px
https://github.com/prog4fun/shiny_ninja/blob/master/app/assets/stylesheets/bootstrap.css#L748
evaluate_project_id Spalte in Users muss gelöscht werden (Migration).
Vorschlag: Die Buttons für den eigenen Account und zum abmelden in der mobilen Ansicht entweder ordentlich positionieren oder Menüpunkte erstellen, die nur angezeigt werden, wenn man innerhalb dieses Breakpoints ist:
Mit richtigem Menü beim Breakpoint:
Ich wüsste wie das zu lösen wäre, aber dann müsste man sich das noch mit dem Login-Formular überlegen. Weil das würde dann auch nicht mehr angezeigt werden -> einfach dann auf die Login-Seite verlinken oder möchtest du eher ein Formular im Menü direkt haben?
Bei der Report Edit wird das Datum gelöscht, sollte es aber nicht werden. Problem: Beim Ändern von z.B. dem Projekt ist das Datum nicht mehr vorhanden und der Report hat kann nicht gespeichert werden.
translation missing: de.devise.failure.user.not_found_in_database
Evtl. falls sinnvoll: im Menü den Namen ShinyNinja statt "#" auf die Startseite http://www.koriath-tech.de/shinyninja/ verlinken? Oder eher auf die Zeiterfassung falls man angemeldet ist?
Abstand unter "Suche" funktioniert nicht trotz margin-bottom: 20px
https://github.com/prog4fun/shiny_ninja/blob/master/app/assets/stylesheets/bootstrap.css#L1633
# encoding: UTF-8
<% if @active_menu == "report" %>
<li class="active"><%= link_to t('activerecord.models.reports'), reports_path, :class => "nav" %></li>
<% else %>
<li class="nav"><%= link_to t('activerecord.models.reports'), reports_path %></li>
<% end %>
<% if user_signed_in? %>
<% @active_menu == "user" ? css_user_class = "active":css_user_class = "nav" %>
<% if current_user.is? :administrator %>
<% if @active_menu == "project" %>
<li class="active"><%= link_to t('activerecord.models.projects'), projects_path %></li>
<% else %>
<li class="nav"><%= link_to t('activerecord.models.projects'), projects_path %></li>
<% end %>
<% if @active_menu == "customer" %>
<li class="active"><%= link_to t('activerecord.models.customers'), customers_path %></li>
<% else %>
<li class="nav"><%= link_to t('activerecord.models.customers'), customers_path %></li>
<% end %>
<% if @active_menu == "service" %>
<li class="active"><%= link_to t('activerecord.models.services'), services_path %></li>
<% else %>
<li class="nav"><%= link_to t('activerecord.models.services'), services_path %></li>
<% end %>
<li class=<%= css_user_class %>><%= link_to t('activerecord.models.users'), :controller => "users", :action => "adm_index" %></li>
<% elsif current_user.is? :time_tracker %>
<% if @active_menu == "project" %>
<li class="active"><%= link_to t('activerecord.models.projects'), projects_path %></li>
<% else %>
<li class="nav"><%= link_to t('activerecord.models.projects'), projects_path %></li>
<% end %>
<% if @active_menu == "customer" %>
<li class="active"><%= link_to t('activerecord.models.customers'), customers_path %></li>
<% else %>
<li class="nav"><%= link_to t('activerecord.models.customers'), customers_path %></li>
<% end %>
<% if @active_menu == "service" %>
<li class="active"><%= link_to t('activerecord.models.services'), services_path %></li>
<% else %>
<li class="nav"><%= link_to t('activerecord.models.services'), services_path %></li>
<% end %>
<li class=<%= css_user_class %>><%= link_to t('labels.roles.projectevaluator'), :controller => "users", :action => "tt_index" %></li>
<%# else project_evaluator and not logged in%>
<% end %>
<% end %>
Könnte man das nicht auch so schreiben:
# encoding: UTF-8
<li class='<% if @active_menu == "report" ? "active" : "nav" %>'><%= link_to t('activerecord.models.reports'), reports_path, :class => "nav" %></li>
<% if user_signed_in? %>
<% @active_menu == "user" ? css_user_class = "active":css_user_class = "nav" %>
<% if current_user.is? :administrator || :time_tracker %>
<li class='<% if @active_menu == "project" ? "active" : "nav" %>'><%= link_to t('activerecord.models.projects'), projects_path %></li>
<li class='<% if @active_menu == "customer" ? "active" : "nav" %>'><%= link_to t('activerecord.models.customers'), customers_path %></li>
<li class='<% if @active_menu == "service" ? "active" : "nav" %>'><%= link_to t('activerecord.models.services'), services_path %></li>
<li class='<% if @active_menu == "users/tt_index" ? "active" : "nav" %>'><%= link_to t('labels.roles.projectevaluator'), :controller => "users", :action => "tt_index" %></li>
<% elsif current_user.is? :administrator %>
<li class='<% if @active_menu == "users/adm_index" ? "active" : "nav" %>'><%= link_to t('activerecord.models.users'), :controller => "users", :action => "adm_index" %></li>
<%# else project_evaluator and not logged in%>
<% end %>
<% end %>
sollte doch, oder?
am Ende bei active_menu == "users/tt_index
und active_menu == "users/adm_index
hatte ich aber keine ahnung, ob das überhaupt so gehen könnte - bzw. eigentlich habe ich ja noch gar keine richtige ahnung was ich hier eigentlich mache........
Bei Rechnungen sollte der Zeitraum nicht nur für einzelne Monate auswählbar sein, sondern ein variabler Zeitraum, wie z.B. 01.11.2013 - 15.12.2013. Das erste Datum könnte anhand des Enddatums der vorherigen Rechnung automatisch vorausgewählt werden.
Das E-Mail-Icon bei E-Mail-Feldern irritiert mich dahingehend, dass es ein @-Symbol ist. Ich neige dadurch dazu, dass ich nur den Teil meiner E-Mail, der nach dem @ kommt, eintrage. Es suggeriert mir, dass der vordere Teil automatisch ergänzt wird.
Evtl. kann man hier einen Briefumschlag als Symbol verwenden?
Die Frage inwieweit sowas realisierbar ist, aber immerhin stehen ja dort Kontodaten... Übertragung per verschlüsselter Verbindung hier schon mal angedacht? Bzw. eigentlich sollten ja Kontodaten auch nicht offen in der Datenbank rumstehen, oder? Sollte man evtl. dort auch nur verschlüsselt eintragen. Und generell ist ja ab Januar mit Konto, BLZ und Bank eh Schluss. Dann gibt es ja nur noch IBAN (und zusätzlich BIC für Auslandsüberweisungen)...
Da ein paar Sachen (eg. Responsive Design) im Internet Explorer nicht unterstützt werden, ich ihn aber auch nicht so gerne habe, werde ich auf der Startseite eine Meldung anzeigen lasen. Vorschlag: NUR auf der Login Seite, da es mir nicht mal die IF abfrage auf jeder Seite wert ist :D
Abfrage erfolgt sehr wahrscheinlich über https://github.com/fnando/browser
Was ist die beste möglichkeit folgendes "SQL-Injection"-sicher zu schreiben:
brands = Brand.where('country_id = ?', 5)
cars = Car.where(:brand_id => brands)
Die zweite Zeile ist nicht gegen SQL-Injections geschützt (http://www.w3schools.com/sql/sql_injection.asp). Sie müsste wie die erste Zeile als cars = Car.where('brand_id = ?', brands)
geschrieben werden. Das ist jedoch nicht möglich.
Vorschlag:
Unterhalb der Suche bei den Zeit-Einträgen einen Punkt "Statistik" mit den Inhalten:
aktueller Monat:
Stundenzahl: X
Umsatz: X
letzter Monat:
Stundenzahl: X
Umsatz: X
Vielleicht gleich noch gefiltert, wenn man in der Suche was eingegeben hat, also Kunde oder Projekt - und falls Datum genauer spezifiziert noch einen zusätzlichen Punkt:
ausgewählter Zeitraum:
Stundenzahl: X
Umsatz: X
http://diveintohtml5.info/offline.html
http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html
http://html5demos.com/storage
Nur so mal als kleine Linksammlung um die WebApp schneller zu machen... Wobei es höchstwahrscheinlich nicht möglich sein wird, offline Einträge zu machen und diese dann bei Netzwerkverbindung auf den Server zu laden... Wunschdenken...
Ist das für users//edit interessant? Bisher ist ja Deutschland hartgecoded... https://github.com/stefanpenner/country_select
aber wie man das dann installiert und so habe ich keine ahnung ^^
Die Seite ist noch nicht ins Bootstrap-Design übernommen. Macht die Seite überhaupt Sinn oder reicht die Fehlermeldung. Man kann es ja auch in der Menüleiste nochmal probieren.
Wird ein Report gespeichert (new), jedoch ein Fehler auftritt, bspw. Projekt leer gelassen, wird der Save and New Butten nicht mehr gerendert,
Vorschlag: den Auswertern IDs der Projekte auf die sie Zugriff haben in eine Zelle in der Datenbank schreiben.
Beim Erstellen eines Auswerters zwei Schritte:
Falls Ja:
2a: ID des Projekts wird in die Datenbank geschrieben, Meldung dass der Benutzer nun berechtigt ist
Falls Nein:
2b: Benutzer noch nicht vorhanden, deswegen Benutzerdaten abfragen und dann den neuen Benutzer berechtigen.
BISHER:
# encoding: UTF-8
<% if notice.present? %>
<div class="container">
<div class="alert-success">
<button type="button" class="close" data-dismiss="alert">×</button>
<%= notice %>
</div>
<% end %>
<% if alert.present? %>
<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert">×</button>
<%= alert %>
</div>
</div>
<% end %>
NEU:
# encoding: UTF-8
<% if notice.present? %>
<div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert">×</button>
<%= notice %>
</div>
<% end %>
<% if alert.present? %>
<div class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert">×</button>
<%= alert %>
</div>
<% end %>
Eine Funktion, um Projekte zu Archivieren = nicht mehr anzeigen. Archivierte Objekte können auf der Index-Seite eingeblendet werden.
Generell sollen irgendwann Rechnungen automatisch als pdf generierbar sein. Nachdem das noch dauert würde ich schon mal das Model usw. erstellen, indem man Rechnungen anlegen kann. Hat derzeit wahrscheinlich noch keinen großen Mehrwert, aber es wäre einge gute Vorbereitung und ich muss mir keine Rechnungsnummern mehr ausdenken. Außerdem würde ich zudem den Status bezahlt/nicht bezahlt einführen. Ansonsten habe ich nämlich bald auch keine Überblick mehr ;)
https://github.com/prog4fun/shiny_ninja/blob/master/app/views/reports/index.html.erb#L41
<% if current_user.is? :project_evaluator %>
<td><%= truncate(report.project.name, :length => 10) %></td>
<% else %>
<td><%= report.service.wage %></td>
<% end %>
Mir werden hier nicht die Bezeichnungen der Tätigkeit angezeigt.
Sinn ist doch, dass Auswerter den Stundenlohn nicht sehen, oder? Weil für sich selbst macht es ja schon irgendwie Sinn, den Namen der Tätigkeit anzuzeigen. Könnte man es dann nicht so schreiben?
<td><%= truncate(report.project.name) %></td>
<% unless current_user.is? :project_evaluator %>
<td><%= report.service.wage %></td>
<% end %>
Und bei truncate würde ich vielleicht gleich die Längenangabe weglassen, dann sollte es ja in den Standard bei truncate von 30 Zeichen fallen... Ist meiner Meinung nach geeigneter als 10 Zeichen...
Ich glaube den Kunden kann man schon im Vorhinein anlegen. Aber Projekt und Tätigkeiten könnten automatisch erstellt werden, falls der passende Eintrag noch nicht in der Datenbank drin ist.
Fortschrittsanzeige für gearbeitete Stunden in einem Projekt: http://getbootstrap.com/components/#progress
Verhältnis (gearb. Stunden)/(Projekt-Stunden)
In einem Numberfield ist der standard step 1, somit wird auch kein dezimaler Wert erlaubt. Steps auf 0.1 setzen: http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-number_field_tag
E-Mails in Shows verlinken, sodass man auf sie drauf klicken kann.
In Report New ist nicht immer das korrekte (heutige) Datum angezeugt.
ist noch nicht möglich
Die Wörter sind auf der Report Index ungünstig gewählt.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.