Commit 2f909655 authored by Evren Kutar's avatar Evren Kutar

Merge branch 'Feature/#143/Formsets'

parents e2453bc9 f096780e
...@@ -62,6 +62,10 @@ module.exports = function (grunt) { ...@@ -62,6 +62,10 @@ module.exports = function (grunt) {
prod_branch: { prod_branch: {
src: ['app/components/**/*.html'], src: ['app/components/**/*.html'],
dest: 'dist/<%= grunt.branchname %>/templates.js' dest: 'dist/<%= grunt.branchname %>/templates.js'
},
dev: {
src: ['app/components/**/*.html', 'app/shared/templates/**/*.html'],
dest: 'tmp/templates.js'
} }
}, },
copy: { copy: {
...@@ -175,7 +179,7 @@ module.exports = function (grunt) { ...@@ -175,7 +179,7 @@ module.exports = function (grunt) {
watch: { watch: {
dev: { dev: {
files: ['app/**/*.js', 'app/components/**/*.html', 'index.html'], files: ['app/**/*.js', 'app/components/**/*.html', 'index.html'],
tasks: ['env:dev', 'preprocess:dev', 'karma:unit'], tasks: ['env:dev', 'preprocess:dev', 'html2js:dev'],
options: { options: {
atBegin: false atBegin: false
} }
...@@ -275,7 +279,8 @@ module.exports = function (grunt) { ...@@ -275,7 +279,8 @@ module.exports = function (grunt) {
grunt.loadNpmTasks('grunt-preprocess'); grunt.loadNpmTasks('grunt-preprocess');
grunt.loadNpmTasks('grunt-env'); grunt.loadNpmTasks('grunt-env');
grunt.registerTask('dev', ['env:dev', 'preprocess:dev', 'connect:server', 'watch:dev']); //grunt.registerTask('dev', ['env:dev', 'preprocess:dev', 'html2js:dev', 'connect:server', 'watch:dev']);
grunt.registerTask('dev', ['env:dev', 'preprocess:dev', 'html2js:dev', 'watch:dev']);
grunt.registerTask('test', ['bower', 'karma:continuous']); grunt.registerTask('test', ['bower', 'karma:continuous']);
grunt.registerTask('i18n', ['nggettext_extract', 'nggettext_compile']); grunt.registerTask('i18n', ['nggettext_extract', 'nggettext_compile']);
grunt.registerTask('default', [ grunt.registerTask('default', [
......
...@@ -20,9 +20,11 @@ var app = angular.module( ...@@ -20,9 +20,11 @@ var app = angular.module(
'ulakbus.auth', 'ulakbus.auth',
'ulakbus.staff', 'ulakbus.staff',
'ulakbus.student', 'ulakbus.student',
'ulakbus.crud',
//'ulakbus.version',
'schemaForm', 'schemaForm',
'gettext', 'gettext',
'templates-prod' //'templates-prod'
]). ]).
/** /**
* RESTURL is the url of rest api to talk * RESTURL is the url of rest api to talk
......
...@@ -10,21 +10,21 @@ app.config(['$routeProvider', function ($routeProvider) { ...@@ -10,21 +10,21 @@ app.config(['$routeProvider', function ($routeProvider) {
templateUrl: 'components/dashboard/dashboard.html', templateUrl: 'components/dashboard/dashboard.html',
controller: 'DashCtrl' controller: 'DashCtrl'
}) })
.when('/student/add', { .when('/crud/:model/add', {
templateUrl: 'components/student/student_add_template.html', templateUrl: 'components/crud/templates/add.html',
controller: 'StudentAddEditCtrl' controller: 'CRUDAddEditCtrl'
}) })
.when('/student/edit/:id', { .when('/crud/:model/edit/:id', {
templateUrl: 'components/student/student_add_template.html', templateUrl: 'components/crud/templates/edit.html',
controller: 'StudentAddEditCtrl' controller: 'CRUDAddEditCtrl'
}) })
.when('/students', { .when('/crud/:model', {
templateUrl: 'components/student/student_list_template.html', templateUrl: 'components/crud/templates/list.html',
controller: 'StudentListCtrl' controller: 'CRUDListCtrl'
}) })
.when('/student/:id', { .when('/crud/:model/:id', {
templateUrl: 'components/student/student_list_template.html', templateUrl: 'components/crud/templates/show.html',
controller: 'StudentShowCtrl' controller: 'CRUDShowCtrl'
}) })
.when('/staff/add', { .when('/staff/add', {
templateUrl: 'components/staff/templates/add.html', templateUrl: 'components/staff/templates/add.html',
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
var auth = angular.module('ulakbus.auth', ['ngRoute', 'schemaForm', 'ngCookies', 'general']); var auth = angular.module('ulakbus.auth', ['ngRoute', 'schemaForm', 'ngCookies', 'general']);
auth.controller('LoginCtrl', function ($scope, $q, $timeout, $routeParams, Generator, LoginService) { auth.controller('LoginCtrl', function ($scope, $q, $timeout, $routeParams, Generator, LoginService) {
$scope.url = 'simple_login'; $scope.url = 'login';
$scope.form_params = {}; $scope.form_params = {};
$scope.form_params['clear_wf'] = 1; $scope.form_params['clear_wf'] = 1;
// todo: change simple login when api ready // todo: change simple login when api ready
......
...@@ -13,7 +13,7 @@ auth.factory('LoginService', function ($http, $rootScope, $location, $log, $cook ...@@ -13,7 +13,7 @@ auth.factory('LoginService', function ($http, $rootScope, $location, $log, $cook
var loginService = {}; var loginService = {};
loginService.login = function (url, credentials) { loginService.login = function (url, credentials) {
credentials = {login_crd: credentials, cmd: "do"}; credentials['cmd'] = "do";
return $http return $http
.post(RESTURL.url + url, credentials) .post(RESTURL.url + url, credentials)
.success(function (data, status, headers, config) { .success(function (data, status, headers, config) {
......
/**
* Copyright (C) 2015 ZetaOps Inc.
*
* This file is licensed under the GNU General Public License v3
* (GPLv3). See LICENSE.txt for details.
*/
'use strict';
var crud = angular.module('ulakbus.crud', ['ngRoute', 'schemaForm', 'formService', 'ui.bootstrap']);
/**
* CRUDAddEditCtrl is a controller
* which provide a form with form generator.
*/
crud.controller('CRUDAddEditCtrl', function ($scope, $rootScope, $location, $http, $log, $modal, Generator, $routeParams) {
$scope.url = 'crud';
$scope.form_params = {'model': $routeParams.model};
if ($routeParams.id) {
$scope.form_params['object_id'] = $routeParams.id;
$scope.form_params['cmd'] = 'edit';
}
else {
$scope.form_params['cmd'] = 'add';
}
// to start in certain part of the workflow use clear_wf=1
//$scope.form_params['clear_wf'] = 1;
// get form with generator
Generator.get_form($scope);
$scope.onSubmit = function (form) {
$scope.$broadcast('schemaFormValidate');
if (form.$valid) {
Generator.submit($scope)
.success(function(data){
$location.path("/crud");
})
.error(function(data){
$scope.message = data.title;
});
}
};
});
// todo: for single point of failure code a "get item" service and use it to
// retrieve list and single item
/**
* CRUD List Controller
*/
crud.controller('CRUDListCtrl', function ($scope, $rootScope, Generator, $routeParams) {
$scope.url = 'crud';
$scope.form_params = {"model": $routeParams.model};
// call generator's get_list func
Generator.get_list($scope)
.then(function (res) {
debugger;
var data = res.data.objects;
for (var item in data){
delete data[item].data['deleted'];
delete data[item].data['timestamp'];
}
$scope.objects = data;
$scope.model = $routeParams.model;
});
});
/**
* CRUD Show Controller
*/
crud.controller('CRUDShowCtrl', function ($scope, $rootScope, Generator, $routeParams) {
$scope.url = 'crud';
$scope.form_params = {"object_id": $routeParams.id, "cmd": "show", "model": $routeParams.model};
// call generator's get_single_itemfunc
Generator.get_single_item($scope).then(function (res) {
$scope.object = res.data.object;
})
});
\ No newline at end of file
/**
* Copyright (C) 2015 ZetaOps Inc.
*
* This file is licensed under the GNU General Public License v3
* (GPLv3). See LICENSE.txt for details.
*/
'use strict';
describe('crud controller module', function () {
beforeEach(module('ulakbus'));
beforeEach(module('ulakbus.crud'));
var $controller;
beforeEach(inject(function (_$controller_) {
$controller = _$controller_;
}));
describe('crud add controller', function() {
it('should get form', function() {
var $scope = {};
var controller = $controller('CRUDAddEditCtrl', { $scope: $scope });
expect($scope).not.toEqual(null);
});
});
describe('crud add controller', function () {
it('should have CRUDAddEditCtrl', inject(function ($controller) {
expect($controller).toBeDefined();
}));
});
});
\ No newline at end of file
<div ng-app="ulakbus.crud">
<ng-include src="'shared/templates/add.html'"></ng-include>
</div>
\ No newline at end of file
<div ng-app="ulakbus.crud">
<div class="col-md-6">
<h1>{{ schema.title }}</h1>
<form name="formgenerated" sf-schema="schema" sf-form="form" sf-model="model" ng-submit="onSubmit(formgenerated)"></form>
</div>
</div>
\ No newline at end of file
<table class="table table-bordered table-responsive">
<thead>
<tr>
<!--<th>{{ objects[0].key }}</th>-->
<th ng-repeat="(key,value) in objects[0].data">{{ key }}</th>
<th>action</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="object in objects">
<!--<td><a ng-href="#/object/{{object.id}}">{{object.name}}</a></td>-->
<td ng-repeat="(key,value) in object.data">{{value}}</td>
<td>
<a ng-href="#/crud/{{model}}/edit/{{object.key}}">Edit</a><br>
<a ng-href="#/crud/{{model}}/{{object.key}}">Show</a>
</td>
</tr>
</tbody>
</table>
\ No newline at end of file
<p ng-repeat="(key, value) in object"><span class="col-md-3">{{ key }}:</span>{{value}}</p>
\ No newline at end of file
...@@ -5,4 +5,4 @@ angular.module('ulakbus.version', [ ...@@ -5,4 +5,4 @@ angular.module('ulakbus.version', [
'ulakbus.version.version-directive' 'ulakbus.version.version-directive'
]) ])
.value('version', '0.1'); .value('version', '0.3');
...@@ -97,8 +97,10 @@ ...@@ -97,8 +97,10 @@
<script src="components/auth/auth_controller.js"></script> <script src="components/auth/auth_controller.js"></script>
<script src="components/auth/auth_service.js"></script> <script src="components/auth/auth_service.js"></script>
<script src="components/dashboard/dashboard_controller.js"></script> <script src="components/dashboard/dashboard_controller.js"></script>
<script src="components/crud/crud_controller.js"></script>
<script src="components/staff/staff_controller.js"></script> <script src="components/staff/staff_controller.js"></script>
<script src="components/student/student_controller.js"></script> <script src="components/student/student_controller.js"></script>
<script src="components/version/version.js"></script>
<!--<script src="bower_components/quantumui/dist/js/quantumui-nojq.js"></script>--> <!--<script src="bower_components/quantumui/dist/js/quantumui-nojq.js"></script>-->
</body> </body>
......
...@@ -20,7 +20,14 @@ app.directive('sidebar',['$location',function() { ...@@ -20,7 +20,14 @@ app.directive('sidebar',['$location',function() {
replace: true, replace: true,
scope: { scope: {
}, },
controller:function($scope){ controller:function($scope, $http, RESTURL){
$http.post(RESTURL.url+'crud/').success(function(data){
//debugger;
$scope.menuItems = data.models;
});
$scope.menuItems = 'dsadkal';
$scope.selectedMenu = 'dashboard'; $scope.selectedMenu = 'dashboard';
$scope.collapseVar = 0; $scope.collapseVar = 0;
$scope.multiCollapseVar = 0; $scope.multiCollapseVar = 0;
......
...@@ -5,44 +5,24 @@ ...@@ -5,44 +5,24 @@
<li ui-sref-active="active"> <li ui-sref-active="active">
<a ui-sref="dashboard.home"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a> <a ui-sref="dashboard.home"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a>
</li> </li>
<li ui-sref-active="active"><a href="#/staffs" translate>Staffs</a></li> <!--<li ui-sref-active="active"><a href="#/staffs" translate>Staffs</a></li>-->
<li ui-sref-active="active"><a href="#/staff/add" translate>New Staff</a></li> <!--<li ui-sref-active="active"><a href="#/staff/add" translate>New Staff</a></li>-->
<!--<li ui-sref-active="active">--> <!--<li ui-sref-active="active"-->
<!--ng-repeat="item in menuItems"><a href="#">{{ item }}</a></li>-->
<!--<a ui-sref="dashboard.chart"><i class="fa fa-bar-chart-o fa-fw"></i> Charts<span></span></a>--> <li ng-repeat="(key, item) in menuItems" ng-class="{active: collapseVar == key}">{{dropDown}}
<a href="" ng-click="check(key)"><i class="fa fa-wrench fa-fw"></i> {{ item }}<span
<!--</li>--> class="fa arrow"></span></a>
<!--<li ui-sref-active="active">--> <ul class="nav nav-second-level" collapse="collapseVar!={{key}}">
<!--<a ui-sref="dashboard.table"><i class="fa fa-table fa-fw"></i> Tables</a>--> <li ui-sref-active="active">
<!--</li>--> <a href="#/crud/{{item}}">List</a>
<!--<li ui-sref-active="active">--> </li>
<!--<a ui-sref="dashboard.form"><i class="fa fa-edit fa-fw"></i> Forms</a>--> <li ui-sref-active="active">
<!--</li>--> <a href="#/crud/{{item}}/add">Add</a>
<!--<li ng-class="{active: collapseVar==1}">{{dropDown}}--> </li>
<!--<a href="" ng-click="check(1)"><i class="fa fa-wrench fa-fw"></i> UI Elements<span--> </ul>
<!--class="fa arrow"></span></a>--> <!-- /.nav-second-level -->
<!--<ul class="nav nav-second-level" collapse="collapseVar!=1">--> </li>
<!--<li ui-sref-active="active">-->
<!--<a ui-sref="dashboard.panels-wells">Panels and Wells</a>-->
<!--</li>-->
<!--<li ui-sref-active="active">-->
<!--<a ui-sref="dashboard.buttons">Buttons</a>-->
<!--</li>-->
<!--<li ui-sref-active="active">-->
<!--<a ui-sref="dashboard.notifications">Notifications</a>-->
<!--</li>-->
<!--<li ui-sref-active="active">-->
<!--<a ui-sref="dashboard.typography">Typography</a>-->
<!--</li>-->
<!--<li ui-sref-active="active">-->
<!--<a ui-sref="dashboard.icons"> Icons</a>-->
<!--</li>-->
<!--<li ui-sref-active="active">-->
<!--<a ui-sref="dashboard.grid">Grid</a>-->
<!--</li>-->
<!--</ul>-->
<!--&lt;!&ndash; /.nav-second-level &ndash;&gt;-->
<!--</li>-->
<!--<li ng-class="{active: collapseVar==2}">--> <!--<li ng-class="{active: collapseVar==2}">-->
<!--<a href="" ng-click="check(2)"><i class="fa fa-sitemap fa-fw"></i> Multi-Level Dropdown<span--> <!--<a href="" ng-click="check(2)"><i class="fa fa-sitemap fa-fw"></i> Multi-Level Dropdown<span-->
<!--class="fa arrow"></span></a>--> <!--class="fa arrow"></span></a>-->
...@@ -91,7 +71,4 @@ ...@@ -91,7 +71,4 @@
</ul> </ul>
</div> </div>
<!-- /.sidebar-collapse --> <!-- /.sidebar-collapse -->
</div> </div>
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Charts</h1>
</div>
<!-- /.col-lg-12 -->
</div>
<div class="row">
<div class="col-lg-6 col-sm-12" id="line-chart" ng-controller="ChartCtrl">
<div class="panel panel-default">
<div class="panel-heading">Line Chart</div>
<div class="panel-body">
<canvas id="line" class="chart chart-line chart-xl" data="line.data" labels="line.labels" legend="true"
click="line.onClick" series="line.series"></canvas>
</div>
</div>
</div>
<div class="col-lg-6 col-sm-12" id="bar-chart" ng-controller="ChartCtrl">
<div class="panel panel-default">
<div class="panel-heading">Bar Chart</div>
<div class="panel-body">
<canvas id="bar" class="chart chart-bar" data="bar.data" labels="bar.labels" series="bar.series"
options="bar.options"></canvas>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6 col-sm-12" id="doughnut-chart" ng-controller="ChartCtrl">
<div class="panel panel-default">
<div class="panel-heading">Doughnut Chart</div>
<div class="panel-body">
<canvas id="doughnut" class="chart chart-doughnut chart-xs" data="donut.data" labels="donut.labels" legend="false"></canvas>
</div>
</div>
</div>
<div class="col-lg-6 col-sm-12" id="radar-chart" ng-controller="ChartCtrl">
<div class="panel panel-default">
<div class="panel-heading">Radar Chart</div>
<div class="panel-body">
<canvas id="area" class="chart chart-radar" data="radar.data" labels="radar.labels" click="onClick"></canvas>
</div>
</div>
</div>
<div class="col-lg-6 col-sm-12" id="pie-chart" ng-controller="ChartCtrl">
<div class="panel panel-default">
<div class="panel-heading">Pie Chart</div>
<div class="panel-body">
<canvas id="pie" class="chart chart-pie chart-xs" data="pie.data" labels="pie.labels"></canvas>
</div>
</div>
</div>
<div class="col-lg-6 col-sm-12" id="polar area-chart" ng-controller="ChartCtrl">
<div class="panel panel-default">
<div class="panel-heading">Polar Area Chart</div>
<div class="panel-body">
<canvas id="polar" class="chart chart-polar-area" data="polar.data" labels="polar.labels"></canvas>
</div>
</div>
</div>
<div class="col-lg-6 col-sm-12" id="base-chart" ng-controller="ChartCtrl">
<div class="panel panel-default">
<div class="panel-heading">Dynamic Chart</div>
<div class="panel-body">
<canvas id="base" class="chart chart-base" chart-type="dynamic.type" data="dynamic.data" labels="dynamic.labels" legend="true"></canvas>
</div>
</div>
<button type="button" class="btn btn-primary pull-right" ng-click="dynamic.toggle()">Toggle</button>
</div>
</div>
\ No newline at end of file
<div>
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Dashboard</h1>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<div class="row">
<stats number="6" comments="New comments!" colour="primary" type="comments"></stats>
<stats number="12" comments="New tasks!" colour="primary" type="user"></stats>
<stats number="18" comments="New orders!" colour="yellow" type="shopping-cart"></stats>
<stats number="24" comments="Support tickets!" colour="red" type="support"></stats>
</div>
<!-- /.panel -->
<div class="row">
<div class="col-lg-8">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-clock-o fa-fw"></i> Responsive Timeline
</div>
<!-- /.panel-heading -->
<timeline></timeline>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.col-lg-8 -->
<div class="col-lg-4">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-bell fa-fw"></i> Notifications Panel
</div>
<!-- /.panel-heading -->
<notifications></notifications>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<chat></chat>
<!-- /.panel .chat-panel -->
</div>
<!-- /.col-lg-4 -->
</div>
<!-- /.row -->
</div>
<div id="wrapper">
<!-- Navigation -->
<header></header>
<!-- /.navbar-top-links -->
<!-- /.navbar-static-side -->
<div id="page-wrapper" style="min-height: 561px;">
<div ui-view></div>
</div>
<!-- /#page-wrapper -->
</div>
This diff is collapsed.
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Blank</h1>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
</div>
\ No newline at end of file
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="login-panel panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Please Sign In</h3>
</div>
<div class="panel-body">
<form role="form">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="E-mail" name="email" type="email" autofocus>
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" name="password" type="password" value="">
</div>
<div class="checkbox">
<label>
<input name="remember" type="checkbox" value="Remember Me">Remember Me
</label>
</div>
<!-- Change this to a button or input when using this as a form -->
<a ui-sref="dashboard.home" class="btn btn-lg btn-success btn-block">Login</a>
</fieldset>
</form>
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Notifications</h1>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<div class="row">
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading">
Alert Styles
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="alert alert-success">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-info">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-warning">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-danger">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
</div>
<!-- .panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.col-lg-6 -->
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading">
Dismissable Alerts
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-info alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-warning alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
</div>
<!-- .panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.col-lg-6 -->
</div>
<!-- /.row -->
<div class="row">
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading">
Modals
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<!-- Button trigger modal -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
Launch Demo Modal
</button>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
<!-- /.modal -->
</div>
<!-- .panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.col-lg-6 -->
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading">
Tooltips and Popovers
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<h4>Tooltip Demo</h4>
<div class="tooltip-demo">
<button type="button" tooltip="Tooltip on left" tooltip-placement="left" class="btn btn-default" title="Tooltip on left">Tooltip on left</button>
<button type="button" tooltip="Tooltip on top" tooltip-placement="top" class="btn btn-default" title="Tooltip on top">Tooltip on top</button>
<button type="button" tooltip="Tooltip on bottom" tooltip-placement="bottom" class="btn btn-default" title="Tooltip on bottom">Tooltip on bottom</button>
<button type="button" tooltip="Tooltip on right" tooltip-placement="right" class="btn btn-default" title="Tooltip on right">Tooltip on right</button>
</div>
<br>
<br>
<h4>Clickable Popover Demo</h4>
<div class="tooltip-demo">
<button type="button" class="btn btn-default" popover="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." popover-placement="left" popover-trigger="click">
Popover on left
</button>
<button type="button" class="btn btn-default" popover="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." popover-placement="top" popover-trigger="click">
Popover on top
</button>
<button type="button" class="btn btn-default" popover="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." popover-placement="bottom" popover-trigger="click">
Popover on bottom
</button>
<button type="button" class="btn btn-default" popover="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." popover-placement="right" popover-trigger="click">
Popover on right
</button>
</div>
</div>
<!-- .panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.col-lg-6 -->
</div>
This diff is collapsed.
This diff is collapsed.
...@@ -13,10 +13,10 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout, ...@@ -13,10 +13,10 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout,
return RESTURL.url + url; return RESTURL.url + url;
}; };
generator.generate = function (scope, forms) { generator.generate = function (scope, forms) {
if (!forms){return scope;}
for (var key in forms) for (var key in forms)
scope[key] = forms[key]; scope[key] = forms[key];
scope.initialModel = angular.copy(scope.model); scope.initialModel = angular.copy(scope.model);
//debugger;
scope.form.push( scope.form.push(
{ {
type: "submit", type: "submit",
...@@ -25,6 +25,11 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout, ...@@ -25,6 +25,11 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout,
); );
// if fieldset in form, make it collapsable with template // if fieldset in form, make it collapsable with template
scope.listnodeform = {}; scope.listnodeform = {};
angular.forEach(scope.schema.properties, function(k, v){
// check if type date and if type date found change it to string
// and give it 'format':'date' property
if (k.type == 'date') {k.type='string'; k.format='date'}
});
if ((scope.listnode && scope.listnodes[0]) || (scope.nodes && scope.nodes[0])) { if ((scope.listnode && scope.listnodes[0]) || (scope.nodes && scope.nodes[0])) {
angular.forEach(scope.form, function (key, val) { angular.forEach(scope.form, function (key, val) {
if (typeof key == "object" && key.type == "fieldset") { if (typeof key == "object" && key.type == "fieldset") {
...@@ -51,7 +56,6 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout, ...@@ -51,7 +56,6 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout,
scope.listnodeform[key.title]["form"] = [angular.copy(key)]; scope.listnodeform[key.title]["form"] = [angular.copy(key)];
scope.listnodeform[key.title]["model"] = {}; scope.listnodeform[key.title]["model"] = {};
key.type = "list"; key.type = "list";
debugger;
delete key.templateUrl; delete key.templateUrl;
delete key.items; delete key.items;
} }
...@@ -80,7 +84,6 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout, ...@@ -80,7 +84,6 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout,
modalInstance.result.then(function (childmodel, key) { modalInstance.result.then(function (childmodel, key) {
angular.forEach(childmodel, function(v, k){ angular.forEach(childmodel, function(v, k){
debugger;
if (scope.model[k]){ if (scope.model[k]){
scope.model[k][v.idx] = v; scope.model[k][v.idx] = v;
} else { } else {
...@@ -89,7 +92,6 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout, ...@@ -89,7 +92,6 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout,
} }
scope.$broadcast('schemaFormRedraw'); scope.$broadcast('schemaFormRedraw');
}); });
debugger;
}); });
}; };
return generator.group(scope); return generator.group(scope);
...@@ -139,19 +141,16 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout, ...@@ -139,19 +141,16 @@ form_generator.factory('Generator', function ($http, $q, $log, $modal, $timeout,
} }
}; };
generator.submit = function ($scope) { generator.submit = function ($scope) {
data = {"form": $scope.model, "cmd": $scope.form_params.cmd, "subcmd": "do_list", "model": $scope.form_params.model};
if ($scope.object_id) { if ($scope.object_id) {
var get_diff = FormDiff.get_diff($scope.model, $scope.initialModel); var get_diff = FormDiff.get_diff($scope.model, $scope.initialModel);
var data = { var data = {
"object_id": $scope.object_id, "object_id": $scope.object_id,
"form": get_diff, "form": get_diff
"cmd": "do"
}; };
} }
else {
data = {"form": $scope.model, "cmd": "do"};
}
return $http return $http
.post(generator.makeUrl($scope.url), data) .post(generator.makeUrl($scope.url), data);
//.then(function (res) { //.then(function (res) {
// // todo: for now fake rest api returns 'ok' no data to // // todo: for now fake rest api returns 'ok' no data to
// // manipulate on ui. therefor used just a log // // manipulate on ui. therefor used just a log
......
...@@ -103,8 +103,10 @@ ...@@ -103,8 +103,10 @@
<script src="components/auth/auth_controller.js"></script> <script src="components/auth/auth_controller.js"></script>
<script src="components/auth/auth_service.js"></script> <script src="components/auth/auth_service.js"></script>
<script src="components/dashboard/dashboard_controller.js"></script> <script src="components/dashboard/dashboard_controller.js"></script>
<script src="components/crud/crud_controller.js"></script>
<script src="components/staff/staff_controller.js"></script> <script src="components/staff/staff_controller.js"></script>
<script src="components/student/student_controller.js"></script> <script src="components/student/student_controller.js"></script>
<script src="components/version/version.js"></script>
<!--<script src="bower_components/quantumui/dist/js/quantumui-nojq.js"></script>--> <!--<script src="bower_components/quantumui/dist/js/quantumui-nojq.js"></script>-->
<!-- @endif --> <!-- @endif -->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment