You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
4.8 KiB
136 lines
4.8 KiB
/**
|
|
* alert
|
|
* Created by yixian on 2016-01-20.
|
|
*/
|
|
define(['../app', 'angular'], function (app, angular) {
|
|
'use strict';
|
|
var defaultCfg = {
|
|
size: null,
|
|
backdrop: true,
|
|
type: 'default'
|
|
};
|
|
app.factory('commonDialog', ['$q', '$uibModal', function ($q, $uibModal) {
|
|
return {
|
|
alert: function (cfg) {
|
|
var choises = [{label: 'OK', className: 'btn-default', key: '1'}];
|
|
var config = {
|
|
title: cfg.title,
|
|
content: cfg.content,
|
|
contentHtml: cfg.contentHtml,
|
|
backdrop: cfg.backdrop,
|
|
size: cfg.size,
|
|
choises: choises,
|
|
type: cfg.type
|
|
};
|
|
var defer = $q.defer();
|
|
showModalDialog(config).then(function () {
|
|
defer.resolve();
|
|
}, function () {
|
|
defer.resolve()
|
|
});
|
|
return defer.promise;
|
|
},
|
|
confirm: function (cfg) {
|
|
var choises = [{label: 'OK', className: 'btn-success', key: '1'},
|
|
{label: 'Cancel', className: 'btn-danger', key: '2', dismiss: true}];
|
|
var config = {
|
|
title: cfg.title,
|
|
content: cfg.content,
|
|
contentHtml: cfg.contentHtml,
|
|
backdrop: cfg.backdrop,
|
|
size: cfg.size,
|
|
choises: cfg.choises || choises
|
|
};
|
|
var deferred = $q.defer();
|
|
showModalDialog(config).then(function (choice) {
|
|
if (choice.dismiss) {
|
|
deferred.reject();
|
|
} else {
|
|
deferred.resolve(choice.key);
|
|
}
|
|
}, function () {
|
|
deferred.reject();
|
|
});
|
|
return deferred.promise;
|
|
},
|
|
inputNum: function (cfg) {
|
|
return $uibModal.open({
|
|
templateUrl: '/static/commons/templates/num_input.html',
|
|
size: 'sm',
|
|
resolve: {
|
|
cfg: function () {
|
|
return cfg;
|
|
}
|
|
},
|
|
controller: ['$scope', 'cfg', function ($scope, cfg) {
|
|
$scope.title = cfg.title || 'Input Amount';
|
|
$scope.data = {};
|
|
$scope.submit = function () {
|
|
$scope.$close($scope.data.num);
|
|
};
|
|
}]
|
|
}).result;
|
|
},
|
|
inputText:function (cfg) {
|
|
return $uibModal.open({
|
|
templateUrl:'/static/commons/templates/text_input.html',
|
|
size:'sm',
|
|
resolve:{
|
|
cfg:function () {
|
|
return cfg;
|
|
}
|
|
},
|
|
controller:['$scope','cfg',function ($scope, cfg) {
|
|
$scope.title = cfg.title || 'Input Amount';
|
|
$scope.data = {};
|
|
$scope.submit = function () {
|
|
$scope.$close($scope.data.text);
|
|
};
|
|
}]
|
|
}).result;
|
|
}
|
|
};
|
|
|
|
function showModalDialog(cfg) {
|
|
cfg = angular.extend({}, defaultCfg, cfg);
|
|
return $uibModal.open({
|
|
templateUrl: 'static/commons/templates/dialog.html',
|
|
controller: 'commonModalCtrl',
|
|
size: cfg.size,
|
|
backdrop: cfg.backdrop,
|
|
resolve: {
|
|
cfg: function () {
|
|
return cfg;
|
|
}
|
|
}
|
|
}).result;
|
|
}
|
|
}]);
|
|
app.controller('commonModalCtrl', ['$scope', '$timeout', 'cfg', function ($scope, $timeout, cfg) {
|
|
var bgClasses = {
|
|
success: 'bg-success',
|
|
error: 'bg-warning',
|
|
info: 'bg-info'
|
|
};
|
|
var glyIcons = {
|
|
success: 'glyphicon-ok-circle',
|
|
error: 'glyphicon-remove-circle',
|
|
info: 'glyphicon-info-sign'
|
|
};
|
|
$scope.title = cfg.title;
|
|
$scope.content = cfg.content;
|
|
$scope.contentHtml = cfg.contentHtml;
|
|
$scope.bgClass = bgClasses[cfg.type];
|
|
$scope.glyIcon = glyIcons[cfg.type];
|
|
$scope.choises = cfg.choises;
|
|
if(cfg.type=='success'){
|
|
$timeout(function () {
|
|
$scope.$dismiss();
|
|
},2000)
|
|
}
|
|
|
|
$scope.btnClick = function (choice) {
|
|
$scope.$close(choice);
|
|
}
|
|
}])
|
|
}); |