Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
ffd9b5e
start admin dashboard
forsaken1 Oct 17, 2017
14eda7e
add resource and simple tests
forsaken1 Oct 20, 2017
e89a5f4
rename routes
forsaken1 Nov 4, 2017
23a7e3c
some tests
forsaken1 May 27, 2018
a64ec59
merge master
forsaken1 Apr 4, 2019
9f470f7
add races controller
forsaken1 Apr 5, 2019
ae6e215
add react js
forsaken1 May 21, 2019
4471941
refactoring
forsaken1 Jun 27, 2019
1445fe5
merge master
forsaken1 Jun 28, 2019
f536dc6
all prop types
forsaken1 Jun 28, 2019
6c8681a
add selects
forsaken1 Jun 30, 2019
a9aae44
rework design
forsaken1 Jun 30, 2019
7ab68fd
add redux
forsaken1 Jul 1, 2019
c36370d
add action toggleEditMode
forsaken1 Jul 1, 2019
26832a0
fetch all
forsaken1 Jul 1, 2019
cecfc8b
add result logic
forsaken1 Jul 2, 2019
d60d80e
add timepicker
forsaken1 Jul 2, 2019
169b0a3
improve the code
forsaken1 Jul 3, 2019
e154867
small fixes
forsaken1 Jul 4, 2019
6d12ab8
add delete
forsaken1 Jul 4, 2019
8a94722
fix editable
forsaken1 Jul 4, 2019
514487e
fix styles
forsaken1 Jul 5, 2019
10b75e4
add router
forsaken1 Jul 8, 2019
2eb2407
improving routing
forsaken1 Jul 9, 2019
60980b9
add header
forsaken1 Jul 10, 2019
ce6a8fd
add watch task
forsaken1 Jul 10, 2019
d9ff8bf
split reducer
forsaken1 Jul 12, 2019
46bf188
upload users when /admin/users
forsaken1 Jul 12, 2019
e7caf7e
add sagas
forsaken1 Jul 15, 2019
22d4bc0
complete with sagas
forsaken1 Jul 15, 2019
f6e60d5
complete with post, put, delete requests
forsaken1 Jul 17, 2019
990fd95
remove bundle.js
forsaken1 Jul 17, 2019
fcdb2df
add bundle.js to gitignore
forsaken1 Jul 17, 2019
36f9d30
add log to api
forsaken1 Jul 17, 2019
cc42dee
add pages
forsaken1 Jul 17, 2019
0f0e715
add User.js
forsaken1 Jul 26, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
37 changes: 37 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"env": {
"browser": true,
"es6": true
},
"extends": [
"airbnb",
"eslint:recommended",
"plugin:react/recommended"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 2018,
"sourceType": "module"
},
"plugins": [
"react"
],
"rules": {
"indent": [2, 2, { "SwitchCase": 1 }],
"react/jsx-filename-extension": [
1,
{
"extensions": [
".js",
".jsx"
]
}
]
}
}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ app
triathlets
.DS_Store
package-lock.json
node_modules
**/bundle.js
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ or
amber w
```

npm watcher

```
npm start
```

run in production:

```
Expand Down
1 change: 1 addition & 0 deletions config/application.cr
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ require "amber"
require "../src/models/**"
require "../src/helpers/**"
require "../src/controllers/application_controller"
require "../src/controllers/admin/dashboard_controller"
require "../src/controllers/**"

# About Application.cr File
Expand Down
6 changes: 6 additions & 0 deletions config/jennifer_test.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Jennifer::Config.read("config/database.yml", :test)

# Jennifer::Config.configure do |conf|
# conf.logger = Logger.new(STDOUT)
# conf.logger.level = Logger::INFO
# end
16 changes: 16 additions & 0 deletions config/routes.cr
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ Amber::Server.configure do |app|
plug Amber::Pipe::Static.new("./public")
end

pipeline :api do
plug Amber::Pipe::Logger.new
end

routes :web do
get "/", HomeController, :index
get "/about", HomeController, :about
Expand All @@ -29,6 +33,18 @@ Amber::Server.configure do |app|
get "/teams/:id", TeamsController, :show
end

routes :api, "/api" do
resources "/races", Api::RacesController, only: [:index, :show, :create, :update, :destroy]
resources "/results", Api::ResultsController, only: [:index, :show, :create, :update, :destroy]
resources "/users", Api::UsersController, only: [:index]
resources "/teams", Api::TeamsController, only: [:index]
resources "/cities", Api::CitiesController, only: [:index]
end

routes :web, "/admin" do
get "/*", Admin::DashboardController, :index
end

routes :static do
# Each route is defined as follow
# verb resource : String, controller : Symbol, action : Symbol
Expand Down
55 changes: 55 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"name": "triathlets",
"version": "1.0.0",
"description": "Triatleths application",
"main": "index.js",
"directories": {
"lib": "lib"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack --mode development --watch",
"watch": "webpack --mode development --watch",
"build": "webpack --mode production",
"lint": "eslint src/**/*.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/forsaken1/triathlets.git"
},
"author": "Alexey Krylov",
"license": "ISC",
"bugs": {
"url": "https://github.com/forsaken1/triathlets/issues"
},
"homepage": "https://github.com/forsaken1/triathlets#readme",
"devDependencies": {
"@babel/core": "^7.4.3",
"@babel/preset-env": "^7.4.3",
"@babel/preset-react": "^7.0.0",
"babel-loader": "^8.0.5",
"css-loader": "^2.1.1",
"eslint": "^5.16.0",
"eslint-config-airbnb": "^17.1.0",
"eslint-plugin-import": "^2.18.0",
"eslint-plugin-jsx-a11y": "^6.2.1",
"eslint-plugin-react": "^7.14.2",
"node-sass": "^4.12.0",
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"webpack": "^4.29.6",
"webpack-cli": "^3.3.0"
},
"dependencies": {
"bootstrap": "^4.3.1",
"rc-time-picker": "^3.7.1",
"react": "^16.8.6",
"react-bootstrap": "^1.0.0-beta.9",
"react-dom": "^16.8.6",
"react-redux": "^7.1.0",
"react-router-dom": "^5.0.1",
"react-select": "^3.0.4",
"redux": "^4.0.1",
"redux-saga": "^1.0.5"
}
}
Empty file removed public/javascripts/main.js
Empty file.
8 changes: 8 additions & 0 deletions spec/requests/dashboard_spec.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
require "../spec_helper"

describe "Admin::Dashboard" do
it "renders /admin" do
get "/admin"
response.status_code.should eq 200
end
end
47 changes: 47 additions & 0 deletions spec/requests/resources_spec.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
require "../spec_helper"

describe "Admin::Resources" do
describe "GET /admin/resources" do
it "responds successfully" do
get "/admin/resources"
response.status_code.should eq 200
end

it "returns users list" do
5.times { |i| User.create name: "name #{i}" }
get "/admin/resources"
p response
end
end

# describe "GET /admin/resources/:id" do
# it "responds successfully" do
# resource = User.create name: "test user"
# get "/admin/resources/#{resource.id}"
# response.status_code.should eq 200
# end
# end

# describe "POST /admin/resources" do
# it "responds successfully" do
# post "/admin/resources"
# response.status_code.should eq 200
# end
# end

# describe "PUT /admin/resources/:id" do
# it "responds successfully" do
# resource = User.create name: "test user"
# put "/admin/resources/#{resource.id}"
# response.status_code.should eq 200
# end
# end

# describe "DELETE /admin/resources/:id" do
# it "responds successfully" do
# resource = User.create name: "test user"
# delete "/admin/resources/#{resource.id}"
# response.status_code.should eq 200
# end
# end
end
16 changes: 13 additions & 3 deletions spec/spec_helper.cr
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
require "spec"
require "amber"
require "amber_spec"
require "jennifer/adapter/postgres"
require "jennifer"
require "../src/controllers/**"
require "../src/mailers/**"
require "../src/models/**"
require "../config/*"
require "../src/helpers/**"
require "../config/jennifer_test"

Spec.before_each do
Jennifer::Adapter.adapter.begin_transaction
end

Spec.after_each do
Jennifer::Adapter.adapter.rollback_transaction
end
9 changes: 9 additions & 0 deletions src/controllers/admin/dashboard_controller.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module Admin
class DashboardController < ApplicationController
LAYOUT = "admin.slang"

def index
render "admin/dashboard/index.slang"
end
end
end
4 changes: 4 additions & 0 deletions src/controllers/api/application_controller.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module Api
class ApplicationController < ::ApplicationController
end
end
11 changes: 11 additions & 0 deletions src/controllers/api/cities_controller.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module Api
class CitiesController < ApplicationController
def index
cities = City.all

respond_with do
json cities.to_a.map(&.as_json).to_json
end
end
end
end
26 changes: 26 additions & 0 deletions src/controllers/api/races_controller.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
module Api
class RacesController < ApplicationController
def index
races = Race.all.to_a
respond_with do
json races.to_json
end
end

def show
race = Race.find! params["id"]
respond_with do
json race.to_json
end
end

def create
end

def update
end

def destroy
end
end
end
70 changes: 70 additions & 0 deletions src/controllers/api/results_controller.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
module Api
class ResultsController < ApplicationController
def index
results = Result.all.order(Result._time.asc).includes(:city, :user, :team, :group).by_race_id race_id

respond_with do
json results.to_a.map(&.as_json).to_json
end
end

def show
result = Result.find! params["id"]

respond_with do
json result.as_json.to_json
end
end

def create
result = Result.build create_result_params

respond_with do
if result.save
json result.as_json.to_json
else
json({"errors" => result.errors.to_a}.to_json)
end
end
end

def update
result = Result.find! params["id"]

respond_with do
if result.update(update_result_params)
json result.as_json.to_json
else
json({"errors" => result.errors.to_a}.to_json)
end
end
end

def destroy
result = Result.find! params["id"]
result.destroy

halt!(200)
end

private def race_id
params["race_id"]? ? params["race_id"] : nil
end

private def update_result_params
{
user_id: params[:user_id].to_i,
city_id: params[:city_id].to_i,
team_id: params[:team_id].to_i,
group_id: params[:group_id]? ? params[:group_id] : nil,
time: params[:time],
}
end

private def create_result_params
update_result_params.merge({
race_id: params[:race_id].to_i,
})
end
end
end
11 changes: 11 additions & 0 deletions src/controllers/api/teams_controller.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module Api
class TeamsController < ApplicationController
def index
teams = Team.all

respond_with do
json teams.to_a.map(&.as_json).to_json
end
end
end
end
11 changes: 11 additions & 0 deletions src/controllers/api/users_controller.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module Api
class UsersController < ApplicationController
def index
users = User.all

respond_with do
json users.to_a.map(&.as_json).to_json
end
end
end
end
Loading